SUBTRANS: Minimizing calls to SubTransSetParent()

Started by Simon Riggsover 3 years ago38 messages
#1Simon Riggs
simon.riggs@enterprisedb.com
3 attachment(s)

On Thu, 4 Aug 2022 at 13:11, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Wed, 3 Aug 2022 at 20:18, Andres Freund <andres@anarazel.de> wrote:

I think we should consider redesigning subtrans more substantially - even with
the changes you propose here, there's still plenty ways to hit really bad
performance. And there's only so much we can do about that without more
fundamental design changes.

I completely agree - you will be glad to hear that I've been working
on a redesign of the subtrans module.

...

I will post my patch, when complete, in a different thread.

The attached patch reduces the overhead of SUBTRANS by minimizing the
number of times SubTransSetParent() is called, to below 1% of the
current rate in common cases.

Instead of blindly calling SubTransSetParent() for every subxid, this
proposal only calls SubTransSetParent() when that information will be
required for later use. It does this by analyzing all of the callers
of SubTransGetParent() and uses these pre-conditions to filter out
calls/subxids that will never be required, for various reasons. It
redesigns the way XactLockTableWait() calls
SubTransGetTopmostTransactionId() to allow this.

This short patchset compiles and passes make check-world, with lengthy comments.

This might then make viable a simple rewrite of SUBTRANS using a hash
table, as proposed by Andres. But in any case, it will allow us to
design a densely packed SUBTRANS replacement that does not generate as
much contention and I/O.

NOTE that this patchset does not touch SUBTRANS at all, it just
minimizes the calls in preparation for a later redesign in a later
patch. If this patch/later versions of it is committed in Sept CF,
then we should be in good shape to post a subtrans redesign patch by
major patch deadline at end of year.

Patches 001 and 002 are common elements of a different patch,
"Smoothing the subtrans performance catastrophe", but other than that,
the two patches are otherwise independent of each other.

Where does this come from? I learnt a lot about subxids when coding
Hot Standby, specifically commit 06da3c570f21394003. This patch just
builds upon that earlier understanding.

Comments please.

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

003_minimize_calls_to_SubTransSetParent.v7.patchapplication/octet-stream; name=003_minimize_calls_to_SubTransSetParent.v7.patchDownload
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..d690774f33 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 50f092d7eb..5577e5b8df 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -693,8 +693,51 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopMostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetStatus will use a status of SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(GetTopTransactionId(), subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons, (1) so it is faster in a long chain of subxids
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * This has the downside that anyone waiting for a lock on aborted
+			 * subtransactions would not be released immediately; that may or
+			 * may not be an acceptable compromise. If not acceptable, this
+			 * simple call needs to be replaced with a loop to register the
+			 * parent for the current subxid stack, so we can walk back up it to
+			 * the topxid.
+			 */
+			SubTransSetParent(subxid, GetTopTransactionId());
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index a9ad40e935..f7c1061a6e 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -261,6 +261,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1440,6 +1447,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1508,6 +1517,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1591,7 +1609,11 @@ TransactionIdIsInProgress(TransactionId xid)
 		for (int i = 0; i < nxids; i++)
 		{
 			if (TransactionIdEquals(xids[i], topxid))
+			{
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = topxid;
 				return true;
+			}
 		}
 	}
 
@@ -1599,6 +1621,28 @@ TransactionIdIsInProgress(TransactionId xid)
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(*pxid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1543da6162..b13a8d20fd 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,17 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid) &&
+			TransactionIdIsValid(pxid))
+			xid = pxid;
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +764,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +783,13 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid) &&
+			TransactionIdIsValid(pxid))
+			xid = pxid;
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 1b2cfac5ad..d7ad1da6a8 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
002_new_isolation_tests_for_subxids.v2.patchapplication/octet-stream; name=002_new_isolation_tests_for_subxids.v2.patchDownload
commit cdda7d36c59e20583f69130d2d05f20f6879d12f
Author: Simon Riggs <simon.riggs@enterprisedb.com>
Date:   Mon Aug 8 12:15:01 2022 +0100

    New iso tests for subxid-overflow

diff --git a/src/test/isolation/expected/subxid-overflow.out b/src/test/isolation/expected/subxid-overflow.out
new file mode 100644
index 0000000000..f6c96f9a34
--- /dev/null
+++ b/src/test/isolation/expected/subxid-overflow.out
@@ -0,0 +1,17 @@
+Parsed test spec with 2 sessions
+
+starting permutation: subxid xmax s2sel s1c
+step subxid: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step xmax: BEGIN; INSERT INTO subxids VALUES (1); COMMIT;
+step s2sel: SELECT count(*) FROM subxids WHERE subx = 0;
+count
+-----
+    0
+(1 row)
+
+step s1c: COMMIT;
diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule
index 529a4cbd4d..7e10cfe022 100644
--- a/src/test/isolation/isolation_schedule
+++ b/src/test/isolation/isolation_schedule
@@ -1,3 +1,4 @@
+test: subxid-overflow
 test: read-only-anomaly
 test: read-only-anomaly-2
 test: read-only-anomaly-3
diff --git a/src/test/isolation/specs/subxid-overflow.spec b/src/test/isolation/specs/subxid-overflow.spec
new file mode 100644
index 0000000000..fda9f449f1
--- /dev/null
+++ b/src/test/isolation/specs/subxid-overflow.spec
@@ -0,0 +1,46 @@
+# Subtransaction overflow
+#
+# This test is designed to cover some code paths which only occur when
+# one transaction has overflowed the subtransaction cache.
+
+setup
+{
+DROP TABLE IF EXISTS subxids;
+CREATE TABLE subxids (subx integer);
+
+CREATE OR REPLACE FUNCTION gen_subxids (n integer)
+ RETURNS VOID
+ LANGUAGE plpgsql
+AS $$
+BEGIN
+  IF n <= 0 THEN
+    INSERT INTO subxids VALUES (0);
+    RETURN;
+  ELSE
+    PERFORM gen_subxids(n - 1);
+    RETURN;
+  END IF;
+EXCEPTION /* generates a subxid */
+  WHEN raise_exception THEN NULL;
+END;
+$$;
+}
+
+teardown
+{
+ DROP TABLE subxids;
+ DROP FUNCTION gen_subxids(integer);
+}
+
+session s1
+step subxid	{ BEGIN; SELECT gen_subxids(100); }
+step s1c	{ COMMIT; }
+
+session s2
+# move xmax forwards
+step xmax	{ BEGIN; INSERT INTO subxids VALUES (1); COMMIT;}
+# will see step subxid as still running
+step s2sel	{ SELECT count(*) FROM subxids WHERE subx = 0; }
+
+# s2sel will see subxid as still running
+permutation subxid xmax s2sel s1c
001_subx_include_subxids_even_if_overflowed.v2.patchapplication/octet-stream; name=001_subx_include_subxids_even_if_overflowed.v2.patchDownload
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0555b02a8d..a9ad40e935 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -2370,27 +2370,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 5bc2a15160..42130f1fea 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -638,13 +638,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1238,8 +1234,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1490,7 +1488,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1504,11 +1502,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
#2Dilip Kumar
dilipbalaut@gmail.com
In reply to: Simon Riggs (#1)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Mon, Aug 8, 2022 at 6:41 PM Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Thu, 4 Aug 2022 at 13:11, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Wed, 3 Aug 2022 at 20:18, Andres Freund <andres@anarazel.de> wrote:

I think we should consider redesigning subtrans more substantially - even with
the changes you propose here, there's still plenty ways to hit really bad
performance. And there's only so much we can do about that without more
fundamental design changes.

I completely agree - you will be glad to hear that I've been working
on a redesign of the subtrans module.

...

I will post my patch, when complete, in a different thread.

The attached patch reduces the overhead of SUBTRANS by minimizing the
number of times SubTransSetParent() is called, to below 1% of the
current rate in common cases.

Instead of blindly calling SubTransSetParent() for every subxid, this
proposal only calls SubTransSetParent() when that information will be
required for later use. It does this by analyzing all of the callers
of SubTransGetParent() and uses these pre-conditions to filter out
calls/subxids that will never be required, for various reasons. It
redesigns the way XactLockTableWait() calls
SubTransGetTopmostTransactionId() to allow this.

This short patchset compiles and passes make check-world, with lengthy comments.

Does this patch set work independently or it has dependency on the
patches on the other thread "Smoothing the subtrans performance
catastrophe"? Because in this patch I see no code where we are
changing anything to control the access of SubTransGetParent() from
SubTransGetTopmostTransactionId()?

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

#3Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Dilip Kumar (#2)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 9 Aug 2022 at 12:39, Dilip Kumar <dilipbalaut@gmail.com> wrote:

This short patchset compiles and passes make check-world, with lengthy comments.

Does this patch set work independently or it has dependency on the
patches on the other thread "Smoothing the subtrans performance
catastrophe"?

Patches 001 and 002 are common elements of a different patch,
"Smoothing the subtrans performance catastrophe", but other than that,
the two patches are otherwise independent of each other.

i.e. there are common elements in both patches
001 puts all subxid data in a snapshot (up to a limit of 64 xids per
topxid), even if one or more xids overflows.

Because in this patch I see no code where we are
changing anything to control the access of SubTransGetParent() from
SubTransGetTopmostTransactionId()?

Those calls are unaffected, i.e. they both still work.

Right now, we register all subxids in subtrans. But not all xids are
subxids, so in fact, subtrans has many "holes" in it, where if you
look up the parent for an xid it will just return
InvalidTransactionId. There is a protection against that causing a
problem because if you call TransactionIdDidCommit/Abort you can get a
WARNING, or if you call SubTransGetTopmostTransaction() you can get an
ERROR, but it is possible if you do a lookup for an inappropriate xid.
i.e. if you call TransactionIdDidCommit() without first calling
TransactionIdIsInProgress() as you are supposed to do.

What this patch does is increase the number of "holes" in subtrans,
reducing the overhead and making the subtrans data structure more
amenable to using a dense structure rather than a sparse structure as
we do now, which then leads to I/O overheads. But in this patch, we
only have holes when we can prove that the subxid's parent will never
be requested.

Specifically, with this patch, running PL/pgSQL with a few
subtransactions in will cause those subxids to be logged in subtrans
about 1% as often as they are now, so greatly reducing the number of
subtrans calls.

Happy to provide more detailed review thoughts, so please keep asking questions.

--
Simon Riggs http://www.EnterpriseDB.com/

#4Dilip Kumar
dilipbalaut@gmail.com
In reply to: Simon Riggs (#3)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, Aug 9, 2022 at 9:46 PM Simon Riggs <simon.riggs@enterprisedb.com> wrote:

Those calls are unaffected, i.e. they both still work.

Right now, we register all subxids in subtrans. But not all xids are
subxids, so in fact, subtrans has many "holes" in it, where if you
look up the parent for an xid it will just return
c. There is a protection against that causing a
problem because if you call TransactionIdDidCommit/Abort you can get a
WARNING, or if you call SubTransGetTopmostTransaction() you can get an
ERROR, but it is possible if you do a lookup for an inappropriate xid.
i.e. if you call TransactionIdDidCommit() without first calling
TransactionIdIsInProgress() as you are supposed to do.

IIUC, if SubTransGetParent SubTransGetParent then
SubTransGetTopmostTransaction() loop will break and return the
previousxid. So if we pass any topxid to
SubTransGetTopmostTransaction() it will return back the same xid and
that's fine as next we are going to search in the snapshot->xip array.

But if we are calling this function with the subxid which might be
there in the snapshot->subxip array but if we are first calling
SubTransGetTopmostTransaction() then it will just return the same xid
if the parent is not set for it. And now if we search this in the
snapshot->xip array then we will get the wrong answer?

So I still think some adjustment is required in XidInMVCCSnapdhot()
such that we first search the snapshot->subxip array.

Am I still missing something?

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

#5Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Dilip Kumar (#4)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Wed, 10 Aug 2022 at 08:34, Dilip Kumar <dilipbalaut@gmail.com> wrote:

Am I still missing something?

No, you have found a dependency between the patches that I was unaware
of. So there is no bug if you apply both patches.

Thanks for looking.

So I still think some adjustment is required in XidInMVCCSnapdhot()

That is one way to resolve the issue, but not the only one. I can also
change AssignTransactionId() to recursively register parent xids for
all of a subxid's parents.

I will add in a test case and resolve the dependency in my next patch.

Thanks again.

--
Simon Riggs http://www.EnterpriseDB.com/

#6Dilip Kumar
dilipbalaut@gmail.com
In reply to: Simon Riggs (#5)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Wed, Aug 10, 2022 at 6:31 PM Simon Riggs
<simon.riggs@enterprisedb.com> wrote:

On Wed, 10 Aug 2022 at 08:34, Dilip Kumar <dilipbalaut@gmail.com> wrote:

Am I still missing something?

No, you have found a dependency between the patches that I was unaware
of. So there is no bug if you apply both patches.

Right

So I still think some adjustment is required in XidInMVCCSnapdhot()

That is one way to resolve the issue, but not the only one. I can also
change AssignTransactionId() to recursively register parent xids for
all of a subxid's parents.

I will add in a test case and resolve the dependency in my next patch.

Okay, thanks, I will look into the updated patch after you submit that.

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

#7Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Dilip Kumar (#6)
2 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Thu, 11 Aug 2022 at 06:32, Dilip Kumar <dilipbalaut@gmail.com> wrote:

So I still think some adjustment is required in XidInMVCCSnapdhot()

That is one way to resolve the issue, but not the only one. I can also
change AssignTransactionId() to recursively register parent xids for
all of a subxid's parents.

I will add in a test case and resolve the dependency in my next patch.

Okay, thanks, I will look into the updated patch after you submit that.

PFA two patches, replacing earlier work
001_new_isolation_tests_for_subxids.v3.patch
002_minimize_calls_to_SubTransSetParent.v8.patch

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

002_minimize_calls_to_SubTransSetParent.v8.patch
Reduces the number of calls to subtrans below 1% for the first 64 subxids,
so overall will substantially reduce subtrans contention on master for the
typical case, as well as smoothing the overflow case.
Some discussion needed on this; there are various options.
This combines the work originally posted here with another patch posted on the
thread "Smoothing the subtrans performance catastrophe".

I will do some performance testing also, but more welcome.

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

002_minimize_calls_to_SubTransSetParent.v8.patchapplication/octet-stream; name=002_minimize_calls_to_SubTransSetParent.v8.patchDownload
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..d690774f33 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..922621b4fc 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -177,6 +177,61 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
+/*
+ * SubTransGetTopmostTransactionPrecedes
+ *
+ * Different form of SubTransGetTopmostTransaction() that minimizes the number
+ * of iterations required to get the parent or stop if it is earlier than cutoff.
+ */
+bool
+SubTransGetTopmostTransactionPrecedes(TransactionId *xid, TransactionId cutoff_xid, bool standby)
+{
+	TransactionId parentXid = *xid,
+				previousXid = *xid;
+
+	/* Can't ask about stuff that might not be around anymore */
+	Assert(TransactionIdFollowsOrEquals(cutoff_xid, TransactionXmin));
+	Assert(TransactionIdFollowsOrEquals(*xid, cutoff_xid));
+
+	while (TransactionIdIsValid(parentXid))
+	{
+		previousXid = parentXid;
+
+		/*
+		 * Stop as soon as we are earlier than the cutoff. This saves multiple
+		 * lookups against subtrans when we have a deeply nested subxid with
+		 * a later snapshot with an xmin much higher than TransactionXmin.
+		 */
+		if (TransactionIdPrecedes(parentXid, cutoff_xid))
+		{
+			*xid = previousXid;
+			return true;
+		}
+		parentXid = SubTransGetParent(parentXid);
+
+		/*
+		 * By convention the parent xid gets allocated first, so should always
+		 * precede the child xid. Anything else points to a corrupted data
+		 * structure that could lead to an infinite loop, so exit.
+		 */
+		if (!TransactionIdPrecedes(parentXid, previousXid))
+			elog(ERROR, "pg_subtrans contains invalid entry: xid %u points to parent xid %u",
+				 previousXid, parentXid);
+
+		/*
+		 * subxids always point directly at parent on standby, so we can avoid
+		 * multiple loops in that case.
+		 */
+		if (standby)
+			break;
+	}
+
+	Assert(TransactionIdIsValid(previousXid));
+
+	*xid = previousXid;
+
+	return false;
+}
 
 /*
  * Initialization of shared memory for SUBTRANS
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 50f092d7eb..5577e5b8df 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -693,8 +693,51 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopMostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetStatus will use a status of SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(GetTopTransactionId(), subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons, (1) so it is faster in a long chain of subxids
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * This has the downside that anyone waiting for a lock on aborted
+			 * subtransactions would not be released immediately; that may or
+			 * may not be an acceptable compromise. If not acceptable, this
+			 * simple call needs to be replaced with a loop to register the
+			 * parent for the current subxid stack, so we can walk back up it to
+			 * the topxid.
+			 */
+			SubTransSetParent(subxid, GetTopTransactionId());
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0555b02a8d..0067fa327f 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -261,6 +261,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1440,6 +1447,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1508,6 +1517,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1591,7 +1609,11 @@ TransactionIdIsInProgress(TransactionId xid)
 		for (int i = 0; i < nxids; i++)
 		{
 			if (TransactionIdEquals(xids[i], topxid))
+			{
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = topxid;
 				return true;
+			}
 		}
 	}
 
@@ -1599,6 +1621,28 @@ TransactionIdIsInProgress(TransactionId xid)
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2370,27 +2414,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1543da6162..3cb607c285 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * that would create a race window against the end of recovery.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +774,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +793,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 9b504c9745..ae9dc0dd92 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1239,8 +1235,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1491,7 +1489,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1505,11 +1503,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2285,6 +2278,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2300,80 +2295,66 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * This patch reorders the operations in XidMVCCSnapshot, so as to reduce
+	 * calls to SubTransGetParent to the absolute minimum needed.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
-		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
-		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
-
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
-
 		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
 			return true;
 	}
-	else
+
+	/*
+	 * If we have the parent xid, then the xid is not in snapshot
+	 */
+	if (have_parent)
+		return false;
+
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
+
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxact array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU glows white hot.
+		 *
+		 * Use SubTransGetTopmostTransactionPrecedes(), which has been
+		 * specially provided to help here. This does two things for us:
+		 *
+		 * 1. On standby, get the parent directly, since in a standby SUBTRANS
+		 * always stores the direct parent only. Doing this avoids
+		 * one lookup of subtrans, since SubTransGetTopmostTransaction()
+		 * always does at least 2 SUBTRANS lookups, the last lookup is
+		 * how the loop knows it has found the parent in normal running.
+		 *
+		 * 2. Stops the iteration to find the parent as soon as we find an
+		 * xid earlier than snapshot->xmin, so we do the minimum lookups.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (SubTransGetTopmostTransactionPrecedes(&xid,
+												  snapshot->xmin,
+												  snapshot->takenDuringRecovery))
+			return false;
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
-
-		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
-		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+		have_parent = true;
+		goto retry_search; /* search arrays again, now we have parent */
 	}
 
 	return false;
diff --git a/src/include/access/subtrans.h b/src/include/access/subtrans.h
index f94e116640..fc4103b769 100644
--- a/src/include/access/subtrans.h
+++ b/src/include/access/subtrans.h
@@ -17,6 +17,7 @@
 extern void SubTransSetParent(TransactionId xid, TransactionId parent);
 extern TransactionId SubTransGetParent(TransactionId xid);
 extern TransactionId SubTransGetTopmostTransaction(TransactionId xid);
+extern bool SubTransGetTopmostTransactionPrecedes(TransactionId *xid, TransactionId cutoff_xid, bool standby);
 
 extern Size SUBTRANSShmemSize(void);
 extern void SUBTRANSShmemInit(void);
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 1b2cfac5ad..d7ad1da6a8 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
001_new_isolation_tests_for_subxids.v3.patchapplication/octet-stream; name=001_new_isolation_tests_for_subxids.v3.patchDownload
diff --git a/src/test/isolation/expected/subxid-overflow.out b/src/test/isolation/expected/subxid-overflow.out
new file mode 100644
index 0000000000..9b0396f451
--- /dev/null
+++ b/src/test/isolation/expected/subxid-overflow.out
@@ -0,0 +1,82 @@
+Parsed test spec with 3 sessions
+
+starting permutation: ins subxov xmax s2sel s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2sel: SELECT val FROM subxids WHERE subx = 0;
+val
+---
+  0
+(1 row)
+
+step s1c: COMMIT;
+
+starting permutation: ins subxov sub3 xmax s2brr s2s3 s3c s2s3 s2c s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step sub3: BEGIN; SAVEPOINT s; INSERT INTO subxids VALUES (1, 0);
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2brr: BEGIN ISOLATION LEVEL REPEATABLE READ;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+(0 rows)
+
+step s3c: COMMIT;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+(0 rows)
+
+step s2c: COMMIT;
+step s1c: COMMIT;
+
+starting permutation: ins subxov sub3 xmax s2brc s2s3 s3c s2s3 s2c s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step sub3: BEGIN; SAVEPOINT s; INSERT INTO subxids VALUES (1, 0);
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2brc: BEGIN ISOLATION LEVEL READ COMMITTED;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+(0 rows)
+
+step s3c: COMMIT;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+  0
+(1 row)
+
+step s2c: COMMIT;
+step s1c: COMMIT;
+
+starting permutation: ins subxov xmax s2upd s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2upd: UPDATE subxids SET val = 1 WHERE subx = 0; <waiting ...>
+step s1c: COMMIT;
+step s2upd: <... completed>
diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule
index 529a4cbd4d..7e10cfe022 100644
--- a/src/test/isolation/isolation_schedule
+++ b/src/test/isolation/isolation_schedule
@@ -1,3 +1,4 @@
+test: subxid-overflow
 test: read-only-anomaly
 test: read-only-anomaly-2
 test: read-only-anomaly-3
diff --git a/src/test/isolation/specs/subxid-overflow.spec b/src/test/isolation/specs/subxid-overflow.spec
new file mode 100644
index 0000000000..9a69db45e8
--- /dev/null
+++ b/src/test/isolation/specs/subxid-overflow.spec
@@ -0,0 +1,79 @@
+# Subtransaction overflow
+#
+# This test is designed to cover some code paths which only occur when
+# one transaction has overflowed the subtransaction cache.
+
+setup
+{
+DROP TABLE IF EXISTS subxids;
+CREATE TABLE subxids (subx integer, val integer);
+
+CREATE OR REPLACE FUNCTION gen_subxids (n integer)
+ RETURNS VOID
+ LANGUAGE plpgsql
+AS $$
+BEGIN
+  IF n <= 0 THEN
+	UPDATE subxids SET val = 1 WHERE subx = 0;
+    RETURN;
+  ELSE
+    PERFORM gen_subxids(n - 1);
+    RETURN;
+  END IF;
+EXCEPTION /* generates a subxid */
+  WHEN raise_exception THEN NULL;
+END;
+$$;
+}
+
+teardown
+{
+ DROP TABLE subxids;
+ DROP FUNCTION gen_subxids(integer);
+}
+
+session s1
+# setup step for each test
+step ins	{ TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0); }
+# long running transaction with overflowed subxids
+step subxov	{ BEGIN; SELECT gen_subxids(100); }
+# commit should always come last to make this long running
+step s1c	{ COMMIT; }
+
+session s2
+# move xmax forwards
+step xmax	{ BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;}
+
+# step for test1
+step s2sel	{ SELECT val FROM subxids WHERE subx = 0; }
+
+# steps for test2
+step s2brr { BEGIN ISOLATION LEVEL REPEATABLE READ; }
+step s2brc { BEGIN ISOLATION LEVEL READ COMMITTED; }
+# look for data written by sub3
+step s2s3	{ SELECT val FROM subxids WHERE subx = 1; }
+step s2c	{ COMMIT; }
+
+# step for test3
+step s2upd	{ UPDATE subxids SET val = 1 WHERE subx = 0; }
+
+session s3
+# transaction with subxids that can commit before s1c
+step sub3	{ BEGIN; SAVEPOINT s; INSERT INTO subxids VALUES (1, 0); }
+step s3c	{ COMMIT; }
+
+# test1
+# s2sel will see subxid as still running
+# designed to test XidInMVCCSnapshot() when overflows, xid is found
+permutation ins subxov xmax s2sel s1c
+
+# test2
+# designed to test XidInMVCCSnapshot() when overflows, xid is not found
+# both SELECTs invisible
+permutation ins subxov sub3 xmax s2brr s2s3 s3c s2s3 s2c s1c
+# 2nd SELECT visible after commit
+permutation ins subxov sub3 xmax s2brc s2s3 s3c s2s3 s2c s1c
+
+# test3
+# designed to test XactLockTableWait() for overflows
+permutation ins subxov xmax s2upd s1c
#8Dilip Kumar
dilipbalaut@gmail.com
In reply to: Simon Riggs (#7)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, Aug 30, 2022 at 10:16 PM Simon Riggs
<simon.riggs@enterprisedb.com> wrote:

PFA two patches, replacing earlier work
001_new_isolation_tests_for_subxids.v3.patch
002_minimize_calls_to_SubTransSetParent.v8.patch

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

002_minimize_calls_to_SubTransSetParent.v8.patch
Reduces the number of calls to subtrans below 1% for the first 64 subxids,
so overall will substantially reduce subtrans contention on master for the
typical case, as well as smoothing the overflow case.
Some discussion needed on this; there are various options.
This combines the work originally posted here with another patch posted on the
thread "Smoothing the subtrans performance catastrophe".

I will do some performance testing also, but more welcome.

Thanks for the updated patch, I have some questions/comments.

1.
+             * This has the downside that anyone waiting for a lock on aborted
+             * subtransactions would not be released immediately; that may or
+             * may not be an acceptable compromise. If not acceptable, this
+             * simple call needs to be replaced with a loop to register the
+             * parent for the current subxid stack, so we can walk
back up it to
+             * the topxid.
+             */
+            SubTransSetParent(subxid, GetTopTransactionId());

I do not understand in which situation we will see this downside. I
mean if we see the logic of XactLockTableWait() then in the current
situation also if the subtransaction is committed we directly wait on
the top transaction by calling SubTransGetTopmostTransaction(xid);

So if the lock-taking subtransaction is committed then we will wait
directly for the top-level transaction and after that, it doesn't
matter if we abort any of the parent subtransactions, because it will
wait for the topmost transaction to complete. And if the lock-taking
subtransaction is aborted then it will anyway stop waiting because
TransactionIdIsInProgress() should return false.

2.
/*
* Notice that we update pg_subtrans with the top-level xid, rather than
* the parent xid. This is a difference between normal processing and
* recovery, yet is still correct in all cases. The reason is that
* subtransaction commit is not marked in clog until commit processing, so
* all aborted subtransactions have already been clearly marked in clog.
* As a result we are able to refer directly to the top-level
* transaction's state rather than skipping through all the intermediate
* states in the subtransaction tree. This should be the first time we
* have attempted to SubTransSetParent().
*/
for (i = 0; i < nsubxids; i++)
SubTransSetParent(subxids[i], topxid);

I think this comment needs some modification because in this patch now
in normal processing also we are setting the topxid as a parent right?

3.
+    while (TransactionIdIsValid(parentXid))
+    {
+        previousXid = parentXid;
+
+        /*
+         * Stop as soon as we are earlier than the cutoff. This saves multiple
+         * lookups against subtrans when we have a deeply nested subxid with
+         * a later snapshot with an xmin much higher than TransactionXmin.
+         */
+        if (TransactionIdPrecedes(parentXid, cutoff_xid))
+        {
+            *xid = previousXid;
+            return true;
+        }
+        parentXid = SubTransGetParent(parentXid);

Do we need this while loop if we are directly setting topxid as a
parent, so with that, we do not need multiple iterations to go to the
top xid?

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

#9Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Dilip Kumar (#8)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 6 Sept 2022 at 12:37, Dilip Kumar <dilipbalaut@gmail.com> wrote:

On Tue, Aug 30, 2022 at 10:16 PM Simon Riggs
<simon.riggs@enterprisedb.com> wrote:

PFA two patches, replacing earlier work
001_new_isolation_tests_for_subxids.v3.patch
002_minimize_calls_to_SubTransSetParent.v8.patch

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

002_minimize_calls_to_SubTransSetParent.v8.patch
Reduces the number of calls to subtrans below 1% for the first 64 subxids,
so overall will substantially reduce subtrans contention on master for the
typical case, as well as smoothing the overflow case.
Some discussion needed on this; there are various options.
This combines the work originally posted here with another patch posted on the
thread "Smoothing the subtrans performance catastrophe".

I will do some performance testing also, but more welcome.

Thanks for the updated patch, I have some questions/comments.

Thanks for the review.

1.
+             * This has the downside that anyone waiting for a lock on aborted
+             * subtransactions would not be released immediately; that may or
+             * may not be an acceptable compromise. If not acceptable, this
+             * simple call needs to be replaced with a loop to register the
+             * parent for the current subxid stack, so we can walk
back up it to
+             * the topxid.
+             */
+            SubTransSetParent(subxid, GetTopTransactionId());

I do not understand in which situation we will see this downside. I
mean if we see the logic of XactLockTableWait() then in the current
situation also if the subtransaction is committed we directly wait on
the top transaction by calling SubTransGetTopmostTransaction(xid);

So if the lock-taking subtransaction is committed then we will wait
directly for the top-level transaction and after that, it doesn't
matter if we abort any of the parent subtransactions, because it will
wait for the topmost transaction to complete. And if the lock-taking
subtransaction is aborted then it will anyway stop waiting because
TransactionIdIsInProgress() should return false.

Yes, correct.

2.
/*
* Notice that we update pg_subtrans with the top-level xid, rather than
* the parent xid. This is a difference between normal processing and
* recovery, yet is still correct in all cases. The reason is that
* subtransaction commit is not marked in clog until commit processing, so
* all aborted subtransactions have already been clearly marked in clog.
* As a result we are able to refer directly to the top-level
* transaction's state rather than skipping through all the intermediate
* states in the subtransaction tree. This should be the first time we
* have attempted to SubTransSetParent().
*/
for (i = 0; i < nsubxids; i++)
SubTransSetParent(subxids[i], topxid);

I think this comment needs some modification because in this patch now
in normal processing also we are setting the topxid as a parent right?

Correct

3.
+    while (TransactionIdIsValid(parentXid))
+    {
+        previousXid = parentXid;
+
+        /*
+         * Stop as soon as we are earlier than the cutoff. This saves multiple
+         * lookups against subtrans when we have a deeply nested subxid with
+         * a later snapshot with an xmin much higher than TransactionXmin.
+         */
+        if (TransactionIdPrecedes(parentXid, cutoff_xid))
+        {
+            *xid = previousXid;
+            return true;
+        }
+        parentXid = SubTransGetParent(parentXid);

Do we need this while loop if we are directly setting topxid as a
parent, so with that, we do not need multiple iterations to go to the
top xid?

Correct. I think we can dispense with
SubTransGetTopmostTransactionPrecedes() entirely.

I was initially trying to leave options open but that is confusing and
as a result, some parts are misleading after I merged the two patches.

I will update the patch, thanks for your scrutiny.

--
Simon Riggs http://www.EnterpriseDB.com/

#10Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Simon Riggs (#9)
1 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 6 Sept 2022 at 13:14, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

I will update the patch, thanks for your scrutiny.

I attach a diff showing what has changed between v8 and v9, and will
reattach a full set of new patches in the next post, so patchtester
doesn't squeal.

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

subx.v8--v9.diffapplication/octet-stream; name=subx.v8--v9.diffDownload
commit a3705442ab0c8f66f600add6181505dac6c1ebf4
Author: Simon Riggs <simon.riggs@enterprisedb.com>
Date:   Tue Sep 13 11:32:32 2022 +0100

    Streamline patches and comments

diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 922621b4fc..140ad78530 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -137,14 +137,8 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
- *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
- * instead of the true topmost parent ID.  This is OK, because in practice
- * we only care about detecting whether the topmost parent is still running
- * or is part of a current snapshot's list of still-running transactions.
- * Therefore, any XID before TransactionXmin is as good as any other.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
@@ -177,62 +171,6 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
-/*
- * SubTransGetTopmostTransactionPrecedes
- *
- * Different form of SubTransGetTopmostTransaction() that minimizes the number
- * of iterations required to get the parent or stop if it is earlier than cutoff.
- */
-bool
-SubTransGetTopmostTransactionPrecedes(TransactionId *xid, TransactionId cutoff_xid, bool standby)
-{
-	TransactionId parentXid = *xid,
-				previousXid = *xid;
-
-	/* Can't ask about stuff that might not be around anymore */
-	Assert(TransactionIdFollowsOrEquals(cutoff_xid, TransactionXmin));
-	Assert(TransactionIdFollowsOrEquals(*xid, cutoff_xid));
-
-	while (TransactionIdIsValid(parentXid))
-	{
-		previousXid = parentXid;
-
-		/*
-		 * Stop as soon as we are earlier than the cutoff. This saves multiple
-		 * lookups against subtrans when we have a deeply nested subxid with
-		 * a later snapshot with an xmin much higher than TransactionXmin.
-		 */
-		if (TransactionIdPrecedes(parentXid, cutoff_xid))
-		{
-			*xid = previousXid;
-			return true;
-		}
-		parentXid = SubTransGetParent(parentXid);
-
-		/*
-		 * By convention the parent xid gets allocated first, so should always
-		 * precede the child xid. Anything else points to a corrupted data
-		 * structure that could lead to an infinite loop, so exit.
-		 */
-		if (!TransactionIdPrecedes(parentXid, previousXid))
-			elog(ERROR, "pg_subtrans contains invalid entry: xid %u points to parent xid %u",
-				 previousXid, parentXid);
-
-		/*
-		 * subxids always point directly at parent on standby, so we can avoid
-		 * multiple loops in that case.
-		 */
-		if (standby)
-			break;
-	}
-
-	Assert(TransactionIdIsValid(previousXid));
-
-	*xid = previousXid;
-
-	return false;
-}
-
 /*
  * Initialization of shared memory for SUBTRANS
  */
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 5577e5b8df..04e597b5ec 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -713,7 +713,7 @@ AssignTransactionId(TransactionState s)
 		 * 2. When IsolationIsSerializable() we sometimes need to access topxid
 		 *    This occurs only when SERIALIZABLE is requested by app user.
 		 *
-		 * 3. When TransactionIdSetStatus will use a status of SUB_COMMITTED,
+		 * 3. When TransactionIdSetTreeStatus will use a status of SUB_COMMITTED,
 		 *    which then requires us to consult subtrans to find parent, which
 		 *    is needed to avoid race condition. In this case we ask Clog/Xact
 		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
@@ -726,14 +726,14 @@ AssignTransactionId(TransactionState s)
 			/*
 			 * Insert entries into subtrans for this xid, noting that the entry
 			 * points directly to the topxid, not the immediate parent. This is
-			 * done for two reasons, (1) so it is faster in a long chain of subxids
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
 			 * (2) so that we don't need to set subxids for unregistered parents.
-			 * This has the downside that anyone waiting for a lock on aborted
-			 * subtransactions would not be released immediately; that may or
-			 * may not be an acceptable compromise. If not acceptable, this
-			 * simple call needs to be replaced with a loop to register the
-			 * parent for the current subxid stack, so we can walk back up it to
-			 * the topxid.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
 			 */
 			SubTransSetParent(subxid, GetTopTransactionId());
 		}
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0067fa327f..dae3832e87 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -1316,14 +1316,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index ae9dc0dd92..e50a640231 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -2310,13 +2310,13 @@ retry_search:
 	{
 		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
 			return true;
-	}
 
-	/*
-	 * If we have the parent xid, then the xid is not in snapshot
-	 */
-	if (have_parent)
-		return false;
+		/*
+		 * If we have the parent xid, then the xid is not in snapshot
+		 */
+		if (have_parent)
+			return false;
+	}
 
 	/*
 	 * Now search subxip, which contains first 64 subxids of each topxid.
@@ -2326,6 +2326,8 @@ retry_search:
 
 	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
 		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
 
 		/*
@@ -2335,26 +2337,34 @@ retry_search:
 		 *
 		 * It is important we do this step last because it is expensive,
 		 * and if everybody does this then SubTransSLRU glows white hot.
-		 *
-		 * Use SubTransGetTopmostTransactionPrecedes(), which has been
-		 * specially provided to help here. This does two things for us:
-		 *
-		 * 1. On standby, get the parent directly, since in a standby SUBTRANS
-		 * always stores the direct parent only. Doing this avoids
-		 * one lookup of subtrans, since SubTransGetTopmostTransaction()
-		 * always does at least 2 SUBTRANS lookups, the last lookup is
-		 * how the loop knows it has found the parent in normal running.
-		 *
-		 * 2. Stops the iteration to find the parent as soon as we find an
-		 * xid earlier than snapshot->xmin, so we do the minimum lookups.
 		 */
-		if (SubTransGetTopmostTransactionPrecedes(&xid,
-												  snapshot->xmin,
-												  snapshot->takenDuringRecovery))
+
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * If xid was indeed a subxact, we might now have an xid < xmin,
+		 * so recheck to avoid an array scan.  No point in rechecking
+		 * xmax. If it wasn't a subxact, pxid will be invalid, so this test
+		 * will do the right thing also.
+		 */
+		if (TransactionIdPrecedes(pxid, snapshot->xmin))
 			return false;
 
-		have_parent = true;
-		goto retry_search; /* search arrays again, now we have parent */
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/subtrans.h b/src/include/access/subtrans.h
index fc4103b769..f94e116640 100644
--- a/src/include/access/subtrans.h
+++ b/src/include/access/subtrans.h
@@ -17,7 +17,6 @@
 extern void SubTransSetParent(TransactionId xid, TransactionId parent);
 extern TransactionId SubTransGetParent(TransactionId xid);
 extern TransactionId SubTransGetTopmostTransaction(TransactionId xid);
-extern bool SubTransGetTopmostTransactionPrecedes(TransactionId *xid, TransactionId cutoff_xid, bool standby);
 
 extern Size SUBTRANSShmemSize(void);
 extern void SUBTRANSShmemInit(void);
#11Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Simon Riggs (#10)
2 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 13 Sept 2022 at 11:56, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Tue, 6 Sept 2022 at 13:14, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

I will update the patch, thanks for your scrutiny.

I attach a diff showing what has changed between v8 and v9, and will
reattach a full set of new patches in the next post, so patchtester
doesn't squeal.

Full set of v9 patches

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

001_new_isolation_tests_for_subxids.v3.patchapplication/octet-stream; name=001_new_isolation_tests_for_subxids.v3.patchDownload
diff --git a/src/test/isolation/expected/subxid-overflow.out b/src/test/isolation/expected/subxid-overflow.out
new file mode 100644
index 0000000000..9b0396f451
--- /dev/null
+++ b/src/test/isolation/expected/subxid-overflow.out
@@ -0,0 +1,82 @@
+Parsed test spec with 3 sessions
+
+starting permutation: ins subxov xmax s2sel s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2sel: SELECT val FROM subxids WHERE subx = 0;
+val
+---
+  0
+(1 row)
+
+step s1c: COMMIT;
+
+starting permutation: ins subxov sub3 xmax s2brr s2s3 s3c s2s3 s2c s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step sub3: BEGIN; SAVEPOINT s; INSERT INTO subxids VALUES (1, 0);
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2brr: BEGIN ISOLATION LEVEL REPEATABLE READ;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+(0 rows)
+
+step s3c: COMMIT;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+(0 rows)
+
+step s2c: COMMIT;
+step s1c: COMMIT;
+
+starting permutation: ins subxov sub3 xmax s2brc s2s3 s3c s2s3 s2c s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step sub3: BEGIN; SAVEPOINT s; INSERT INTO subxids VALUES (1, 0);
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2brc: BEGIN ISOLATION LEVEL READ COMMITTED;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+(0 rows)
+
+step s3c: COMMIT;
+step s2s3: SELECT val FROM subxids WHERE subx = 1;
+val
+---
+  0
+(1 row)
+
+step s2c: COMMIT;
+step s1c: COMMIT;
+
+starting permutation: ins subxov xmax s2upd s1c
+step ins: TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0);
+step subxov: BEGIN; SELECT gen_subxids(100);
+gen_subxids
+-----------
+           
+(1 row)
+
+step xmax: BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;
+step s2upd: UPDATE subxids SET val = 1 WHERE subx = 0; <waiting ...>
+step s1c: COMMIT;
+step s2upd: <... completed>
diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule
index 529a4cbd4d..7e10cfe022 100644
--- a/src/test/isolation/isolation_schedule
+++ b/src/test/isolation/isolation_schedule
@@ -1,3 +1,4 @@
+test: subxid-overflow
 test: read-only-anomaly
 test: read-only-anomaly-2
 test: read-only-anomaly-3
diff --git a/src/test/isolation/specs/subxid-overflow.spec b/src/test/isolation/specs/subxid-overflow.spec
new file mode 100644
index 0000000000..9a69db45e8
--- /dev/null
+++ b/src/test/isolation/specs/subxid-overflow.spec
@@ -0,0 +1,79 @@
+# Subtransaction overflow
+#
+# This test is designed to cover some code paths which only occur when
+# one transaction has overflowed the subtransaction cache.
+
+setup
+{
+DROP TABLE IF EXISTS subxids;
+CREATE TABLE subxids (subx integer, val integer);
+
+CREATE OR REPLACE FUNCTION gen_subxids (n integer)
+ RETURNS VOID
+ LANGUAGE plpgsql
+AS $$
+BEGIN
+  IF n <= 0 THEN
+	UPDATE subxids SET val = 1 WHERE subx = 0;
+    RETURN;
+  ELSE
+    PERFORM gen_subxids(n - 1);
+    RETURN;
+  END IF;
+EXCEPTION /* generates a subxid */
+  WHEN raise_exception THEN NULL;
+END;
+$$;
+}
+
+teardown
+{
+ DROP TABLE subxids;
+ DROP FUNCTION gen_subxids(integer);
+}
+
+session s1
+# setup step for each test
+step ins	{ TRUNCATE subxids; INSERT INTO subxids VALUES (0, 0); }
+# long running transaction with overflowed subxids
+step subxov	{ BEGIN; SELECT gen_subxids(100); }
+# commit should always come last to make this long running
+step s1c	{ COMMIT; }
+
+session s2
+# move xmax forwards
+step xmax	{ BEGIN; INSERT INTO subxids VALUES (99, 0); COMMIT;}
+
+# step for test1
+step s2sel	{ SELECT val FROM subxids WHERE subx = 0; }
+
+# steps for test2
+step s2brr { BEGIN ISOLATION LEVEL REPEATABLE READ; }
+step s2brc { BEGIN ISOLATION LEVEL READ COMMITTED; }
+# look for data written by sub3
+step s2s3	{ SELECT val FROM subxids WHERE subx = 1; }
+step s2c	{ COMMIT; }
+
+# step for test3
+step s2upd	{ UPDATE subxids SET val = 1 WHERE subx = 0; }
+
+session s3
+# transaction with subxids that can commit before s1c
+step sub3	{ BEGIN; SAVEPOINT s; INSERT INTO subxids VALUES (1, 0); }
+step s3c	{ COMMIT; }
+
+# test1
+# s2sel will see subxid as still running
+# designed to test XidInMVCCSnapshot() when overflows, xid is found
+permutation ins subxov xmax s2sel s1c
+
+# test2
+# designed to test XidInMVCCSnapshot() when overflows, xid is not found
+# both SELECTs invisible
+permutation ins subxov sub3 xmax s2brr s2s3 s3c s2s3 s2c s1c
+# 2nd SELECT visible after commit
+permutation ins subxov sub3 xmax s2brc s2s3 s3c s2s3 s2c s1c
+
+# test3
+# designed to test XactLockTableWait() for overflows
+permutation ins subxov xmax s2upd s1c
002_minimize_calls_to_SubTransSetParent.v9.patchapplication/octet-stream; name=002_minimize_calls_to_SubTransSetParent.v9.patchDownload
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..d690774f33 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..140ad78530 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -137,14 +137,8 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
- *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
- * instead of the true topmost parent ID.  This is OK, because in practice
- * we only care about detecting whether the topmost parent is still running
- * or is part of a current snapshot's list of still-running transactions.
- * Therefore, any XID before TransactionXmin is as good as any other.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
@@ -177,7 +171,6 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
-
 /*
  * Initialization of shared memory for SUBTRANS
  */
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 50f092d7eb..04e597b5ec 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -693,8 +693,51 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopMostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetTreeStatus will use a status of SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(GetTopTransactionId(), subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
+			 */
+			SubTransSetParent(subxid, GetTopTransactionId());
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0555b02a8d..dae3832e87 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -261,6 +261,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1309,14 +1316,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
@@ -1440,6 +1447,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1508,6 +1517,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1591,7 +1609,11 @@ TransactionIdIsInProgress(TransactionId xid)
 		for (int i = 0; i < nxids; i++)
 		{
 			if (TransactionIdEquals(xids[i], topxid))
+			{
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = topxid;
 				return true;
+			}
 		}
 	}
 
@@ -1599,6 +1621,28 @@ TransactionIdIsInProgress(TransactionId xid)
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2370,27 +2414,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1043068bac..3e529e1bc2 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * that would create a race window against the end of recovery.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +774,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +793,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 9b504c9745..e50a640231 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1239,8 +1235,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1491,7 +1489,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1505,11 +1503,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2285,6 +2278,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2300,80 +2295,76 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * This patch reorders the operations in XidMVCCSnapshot, so as to reduce
+	 * calls to SubTransGetParent to the absolute minimum needed.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
+		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
+			return true;
+
 		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
+		 * If we have the parent xid, then the xid is not in snapshot
 		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (have_parent)
+			return false;
+	}
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
 
-		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
-			return true;
-	}
-	else
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxact array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU glows white hot.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
 
 		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
+		 * If xid was indeed a subxact, we might now have an xid < xmin,
+		 * so recheck to avoid an array scan.  No point in rechecking
+		 * xmax. If it wasn't a subxact, pxid will be invalid, so this test
+		 * will do the right thing also.
 		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+		if (TransactionIdPrecedes(pxid, snapshot->xmin))
+			return false;
+
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 1b2cfac5ad..d7ad1da6a8 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
#12Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Simon Riggs (#7)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On 2022-Aug-30, Simon Riggs wrote:

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

I gave this a quick run to confirm the claimed increase of coverage. It
checks out, so pushed.

--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/

#13Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Alvaro Herrera (#12)
1 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Wed, 14 Sept 2022 at 15:21, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

On 2022-Aug-30, Simon Riggs wrote:

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

I gave this a quick run to confirm the claimed increase of coverage. It
checks out, so pushed.

Thank you.

So now we just have the main part of the patch, reattached here for
the auto patch tester's benefit.

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

002_minimize_calls_to_SubTransSetParent.v9.patchapplication/octet-stream; name=002_minimize_calls_to_SubTransSetParent.v9.patchDownload
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..d690774f33 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..140ad78530 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -137,14 +137,8 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
- *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
- * instead of the true topmost parent ID.  This is OK, because in practice
- * we only care about detecting whether the topmost parent is still running
- * or is part of a current snapshot's list of still-running transactions.
- * Therefore, any XID before TransactionXmin is as good as any other.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
@@ -177,7 +171,6 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
-
 /*
  * Initialization of shared memory for SUBTRANS
  */
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 50f092d7eb..04e597b5ec 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -693,8 +693,51 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopMostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetTreeStatus will use a status of SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(GetTopTransactionId(), subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
+			 */
+			SubTransSetParent(subxid, GetTopTransactionId());
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0555b02a8d..dae3832e87 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -261,6 +261,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1309,14 +1316,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
@@ -1440,6 +1447,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1508,6 +1517,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1591,7 +1609,11 @@ TransactionIdIsInProgress(TransactionId xid)
 		for (int i = 0; i < nxids; i++)
 		{
 			if (TransactionIdEquals(xids[i], topxid))
+			{
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = topxid;
 				return true;
+			}
 		}
 	}
 
@@ -1599,6 +1621,28 @@ TransactionIdIsInProgress(TransactionId xid)
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2370,27 +2414,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1043068bac..3e529e1bc2 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * that would create a race window against the end of recovery.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +774,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +793,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 9b504c9745..e50a640231 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1239,8 +1235,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1491,7 +1489,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1505,11 +1503,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2285,6 +2278,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2300,80 +2295,76 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * This patch reorders the operations in XidMVCCSnapshot, so as to reduce
+	 * calls to SubTransGetParent to the absolute minimum needed.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
+		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
+			return true;
+
 		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
+		 * If we have the parent xid, then the xid is not in snapshot
 		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (have_parent)
+			return false;
+	}
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
 
-		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
-			return true;
-	}
-	else
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxact array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU glows white hot.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
 
 		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
+		 * If xid was indeed a subxact, we might now have an xid < xmin,
+		 * so recheck to avoid an array scan.  No point in rechecking
+		 * xmax. If it wasn't a subxact, pxid will be invalid, so this test
+		 * will do the right thing also.
 		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+		if (TransactionIdPrecedes(pxid, snapshot->xmin))
+			return false;
+
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 1b2cfac5ad..d7ad1da6a8 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
#14Japin Li
japinli@hotmail.com
In reply to: Simon Riggs (#13)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Thu, 15 Sep 2022 at 18:04, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Wed, 14 Sept 2022 at 15:21, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

On 2022-Aug-30, Simon Riggs wrote:

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

I gave this a quick run to confirm the claimed increase of coverage. It
checks out, so pushed.

Thank you.

So now we just have the main part of the patch, reattached here for
the auto patch tester's benefit.

Hi Simon,

Thanks for the updated patch, here are some comments.

There is a typo, s/SubTransGetTopMostTransaction/SubTransGetTopmostTransaction/g.

+ * call SubTransGetTopMostTransaction() if that xact overflowed;

Is there a punctuation mark missing on the following first line?

+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid
+		 *    This occurs only when SERIALIZABLE is requested by app user.

When we use function name in comments, some places we use parentheses,
but others do not use it. Why? I think, we should keep them consistent,
at least in the same commit.

+		 * 3. When TransactionIdSetTreeStatus will use a status of SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids.

Maybe we declaration a topxid to avoid calling GetTopTransactionId()
twice when we should set subtrans parent?

+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+		TransactionId topxid = GetTopTransactionId();
  ...
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(topxid, subxid))
+		{
  ...
+			SubTransSetParent(subxid, topxid);
+		}

--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.

#15Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Japin Li (#14)
1 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Thu, 15 Sept 2022 at 12:36, Japin Li <japinli@hotmail.com> wrote:

On Thu, 15 Sep 2022 at 18:04, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Wed, 14 Sept 2022 at 15:21, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

On 2022-Aug-30, Simon Riggs wrote:

001_new_isolation_tests_for_subxids.v3.patch
Adds new test cases to master without adding any new code, specifically
addressing the two areas of code that are not tested by existing tests.
This gives us a baseline from which we can do test driven development.
I'm hoping this can be reviewed and committed fairly smoothly.

I gave this a quick run to confirm the claimed increase of coverage. It
checks out, so pushed.

Thank you.

So now we just have the main part of the patch, reattached here for
the auto patch tester's benefit.

Hi Simon,

Thanks for the updated patch, here are some comments.

Thanks for your comments.

There is a typo, s/SubTransGetTopMostTransaction/SubTransGetTopmostTransaction/g.

+ * call SubTransGetTopMostTransaction() if that xact overflowed;

Is there a punctuation mark missing on the following first line?

+                * 2. When IsolationIsSerializable() we sometimes need to access topxid
+                *    This occurs only when SERIALIZABLE is requested by app user.

When we use function name in comments, some places we use parentheses,
but others do not use it. Why? I think, we should keep them consistent,
at least in the same commit.

+                * 3. When TransactionIdSetTreeStatus will use a status of SUB_COMMITTED,
+                *    which then requires us to consult subtrans to find parent, which
+                *    is needed to avoid race condition. In this case we ask Clog/Xact
+                *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+                *    clog page every 32000 xids, this is usually <<1% of subxids.

I've reworded those comments, hoping to address all of your above points.

Maybe we declaration a topxid to avoid calling GetTopTransactionId()
twice when we should set subtrans parent?

+               TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+               TransactionId topxid = GetTopTransactionId();
...
+               if (MyProc->subxidStatus.overflowed ||
+                       IsolationIsSerializable() ||
+                       !TransactionIdsAreOnSameXactPage(topxid, subxid))
+               {
...
+                       SubTransSetParent(subxid, topxid);
+               }

Seems a minor point, but I've done this anyway.

Thanks for the review.

v10 attached

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

002_minimize_calls_to_SubTransSetParent.v10.patchapplication/octet-stream; name=002_minimize_calls_to_SubTransSetParent.v10.patchDownload
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..d690774f33 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..140ad78530 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -137,14 +137,8 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
- *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
- * instead of the true topmost parent ID.  This is OK, because in practice
- * we only care about detecting whether the topmost parent is still running
- * or is part of a current snapshot's list of still-running transactions.
- * Therefore, any XID before TransactionXmin is as good as any other.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
@@ -177,7 +171,6 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
-
 /*
  * Initialization of shared memory for SUBTRANS
  */
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 50f092d7eb..1c8eb0bbf6 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -693,8 +693,53 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+		TransactionId topxid = GetTopTransactionId();
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopmostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid.
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetTreeStatus() will use status SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids,
+		 *    depending upon how far apart the subxacts assign subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(topxid, subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
+			 */
+			SubTransSetParent(subxid, topxid);
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0555b02a8d..dae3832e87 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -261,6 +261,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1309,14 +1316,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
@@ -1440,6 +1447,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1508,6 +1517,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1591,7 +1609,11 @@ TransactionIdIsInProgress(TransactionId xid)
 		for (int i = 0; i < nxids; i++)
 		{
 			if (TransactionIdEquals(xids[i], topxid))
+			{
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = topxid;
 				return true;
+			}
 		}
 	}
 
@@ -1599,6 +1621,28 @@ TransactionIdIsInProgress(TransactionId xid)
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2370,27 +2414,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1043068bac..3e529e1bc2 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * that would create a race window against the end of recovery.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +774,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +793,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 9b504c9745..e50a640231 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1239,8 +1235,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1491,7 +1489,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1505,11 +1503,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2285,6 +2278,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2300,80 +2295,76 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * This patch reorders the operations in XidMVCCSnapshot, so as to reduce
+	 * calls to SubTransGetParent to the absolute minimum needed.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
+		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
+			return true;
+
 		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
+		 * If we have the parent xid, then the xid is not in snapshot
 		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (have_parent)
+			return false;
+	}
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
 
-		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
-			return true;
-	}
-	else
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxact array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU glows white hot.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
 
 		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
+		 * If xid was indeed a subxact, we might now have an xid < xmin,
+		 * so recheck to avoid an array scan.  No point in rechecking
+		 * xmax. If it wasn't a subxact, pxid will be invalid, so this test
+		 * will do the right thing also.
 		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+		if (TransactionIdPrecedes(pxid, snapshot->xmin))
+			return false;
+
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 1b2cfac5ad..d7ad1da6a8 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
#16Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Simon Riggs (#15)
1 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Fri, 16 Sept 2022 at 13:20, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

Thanks for the review.

v10 attached

v11 attached, corrected for recent commit
14ff44f80c09718d43d853363941457f5468cc03.

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

002_minimize_calls_to_SubTransSetParent.v11.patchapplication/octet-stream; name=002_minimize_calls_to_SubTransSetParent.v11.patchDownload
commit 6a8e6f99b08a0a03ea8e415b5eaf24ceb398f4b4
Author: Simon Riggs <simon.riggs@enterprisedb.com>
Date:   Mon Sep 26 14:51:49 2022 +0100

    v11

diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..d690774f33 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..140ad78530 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -137,14 +137,8 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
- *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
- * instead of the true topmost parent ID.  This is OK, because in practice
- * we only care about detecting whether the topmost parent is still running
- * or is part of a current snapshot's list of still-running transactions.
- * Therefore, any XID before TransactionXmin is as good as any other.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
@@ -177,7 +171,6 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
-
 /*
  * Initialization of shared memory for SUBTRANS
  */
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 2bb975943c..ff58d19595 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -693,8 +693,53 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+		TransactionId topxid = GetTopTransactionId();
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopmostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid.
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetTreeStatus() will use status SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids,
+		 *    depending upon how far apart the subxacts assign subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(topxid, subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
+			 */
+			SubTransSetParent(subxid, topxid);
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 207c4b27fd..fc42d865be 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -262,6 +262,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1310,14 +1317,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
@@ -1441,6 +1448,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1509,6 +1518,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1589,12 +1607,38 @@ TransactionIdIsInProgress(TransactionId xid)
 	Assert(TransactionIdIsValid(topxid));
 	if (!TransactionIdEquals(topxid, xid) &&
 		pg_lfind32(topxid, xids, nxids))
+	{
+		LastCallXidIsInProgressSubXid = xid;
+		LastCallXidIsInProgressParentXid = topxid;
 		return true;
+	}
 
 	cachedXidIsNotInProgress = xid;
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2366,27 +2410,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1043068bac..3e529e1bc2 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * that would create a race window against the end of recovery.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +774,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +793,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index f1f2ddac17..b8d4e1d8dc 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1240,8 +1236,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1492,7 +1490,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1506,11 +1504,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2286,6 +2279,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2301,80 +2296,76 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * This patch reorders the operations in XidMVCCSnapshot, so as to reduce
+	 * calls to SubTransGetParent to the absolute minimum needed.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
+		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
+			return true;
+
 		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
+		 * If we have the parent xid, then the xid is not in snapshot
 		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (have_parent)
+			return false;
+	}
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
 
-		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
-			return true;
-	}
-	else
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxact array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU glows white hot.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
 
 		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
+		 * If xid was indeed a subxact, we might now have an xid < xmin,
+		 * so recheck to avoid an array scan.  No point in rechecking
+		 * xmax. If it wasn't a subxact, pxid will be invalid, so this test
+		 * will do the right thing also.
 		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+		if (TransactionIdPrecedes(pxid, snapshot->xmin))
+			return false;
+
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 9761f5374c..8f344dab6f 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
#17Julien Tachoires
julmon@gmail.com
In reply to: Simon Riggs (#16)
3 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Hi,

Le lun. 26 sept. 2022 à 15:57, Simon Riggs
<simon.riggs@enterprisedb.com> a écrit :

On Fri, 16 Sept 2022 at 13:20, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

Thanks for the review.

v10 attached

v11 attached, corrected for recent commit
14ff44f80c09718d43d853363941457f5468cc03.

Please find below the performance tests results I have produced for this patch.
Attaching some charts and the scripts used to reproduce these tests.

1. Assumption

The number of sub-transaction issued by only one long running
transaction may affect global TPS throughput if the number of
sub-transaction exceeds 64 (sub-overflow)

2. Testing scenario

Based on pgbench, 2 different types of DB activity are applied concurrently:
- 1 long running transaction, including N sub-transactions
- X pgbench clients running read-only workload

Tests are executed with a varying number of sub-transactions: from 0 to 128
Key metric is the TPS rate reported by pgbench runs in read-only mode

Tests are executed against
- HEAD (14a737)
- HEAD (14a737) + 002_minimize_calls_to_SubTransSetParent.v11.patch

3. Long transaction anatomy

Two different long transactions are tested because they don't have the
exact same impact on performance.

Transaction number 1 includes one UPDATE affecting each row of
pgbench_accounts, plus an additional UPDATE affecting only one row but
executed in its own rollbacked sub-transaction:
BEGIN;
SAVEPOINT s1;
SAVEPOINT s2;
-- ...
SAVEPOINT sN - 1;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid > 0;
SAVEPOINT sN;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid = 12345;
ROLLBACK TO SAVEPOINT sN;
-- sleeping until the end of the test
ROLLBACK;

Transaction 2 includes one UPDATE affecting each row of pgbench_accounts:
BEGIN;
SAVEPOINT s1;
SAVEPOINT s2;
-- ...
SAVEPOINT sN;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid > 0;
-- sleeping until the end of the test
ROLLBACK;

4. Test results with transaction 1

TPS vs number of sub-transaction

nsubx HEAD patched
--------------------
0 441109 439474
8 439045 438103
16 439123 436993
24 436269 434194
32 439707 437429
40 439997 437220
48 439388 437422
56 439409 437210
64 439748 437366
72 92869 434448
80 66577 434100
88 61243 434255
96 57016 434419
104 52132 434917
112 49181 433755
120 46581 434044
128 44067 434268

Perf profiling on HEAD with 80 sub-transactions:
Overhead Symbol
51.26% [.] LWLockAttemptLock
24.59% [.] LWLockRelease
0.36% [.] base_yyparse
0.35% [.] PinBuffer
0.34% [.] AllocSetAlloc
0.33% [.] hash_search_with_hash_value
0.22% [.] LWLockAcquire
0.20% [.] UnpinBuffer
0.15% [.] SimpleLruReadPage_ReadOnly
0.15% [.] _bt_compare

Perf profiling on patched with 80 sub-transactions:
Overhead Symbol
2.64% [.] AllocSetAlloc
2.09% [.] base_yyparse
1.76% [.] hash_search_with_hash_value
1.62% [.] LWLockAttemptLock
1.26% [.] MemoryContextAllocZeroAligned
0.93% [.] _bt_compare
0.92% [.] expression_tree_walker_impl.part.4
0.84% [.] SearchCatCache1
0.79% [.] palloc
0.64% [.] core_yylex

5. Test results with transaction 2

nsubx HEAD patched
--------------------
0 440145 443816
8 438867 443081
16 438634 441786
24 436406 440187
32 439203 442447
40 439819 443574
48 439314 442941
56 439801 443736
64 439074 441970
72 439833 444132
80 148737 439941
88 413714 443343
96 251098 442021
104 70190 443488
112 405507 438866
120 177827 443202
128 399431 441842

From the performance point of view, this patch clearly fixes the
dramatic TPS collapse shown in these tests.

Regards,

--
Julien Tachoires
EDB

Attachments:

subtrans-benchmark.tar.gzapplication/x-gzip; name=subtrans-benchmark.tar.gzDownload
tps-head-patched-xact-2.pngimage/png; name=tps-head-patched-xact-2.pngDownload
�PNG


IHDR����AiCCPICC ProfileH��WXS��[��@h�H	�	��B  l�$@(1��YTp-�X����(������"��bAAYu�+oR@�}�{�}s�������sg����i�H����#�G�3���g�t	���+bFE�X����w7"m��I����_������8������0x%W$��(�Mg���V�%�B�T����R�S����&6�qJ*�8��3���PC�b!O @��ON�t�)[A�R}��t����:����c�\dE)@�+����?���KN�d���*��h��a�ngM�b�����kB�A���C�R2$!qr{T����9t�x��0��!fG�+��4Ab�B�Y�<v,�:/���(l���G+|��ibS�_��e~��J���
�7|�BS-��M���Y� >bU��s�b�6�2XC6bI�4~3����`�>��&�V�������!`G(p]^Fl�<?X�#�����qC:�����������c=|a\�B��(�?Z>������	?;X��@��������)���DyQ��8��LNh�<|,@k*�2�������{��A:�;34"A�#��P���r����z� �_�Y����z�e#��3�s@����(���x�2�x�����f�*������aB&\�H�<2��,���b1�h���>��~�:�����<���:	�	7]�;���QN]P?H���s�[@M����P��z�w�~��/��Y�"niV#��6������@F���~d��#UmT]�U���1?�XS�������C�y�
i�-�a���"vk����a'�xxu=���!o��x��������4��5�_�}y�Y�w4`M��3�L�E�3�B�������������.�n �K������>88x�;�@�T��[�s�������\�8_����%��N���X��8W��@ � $��0����`&��bP
V�u`�
v�=`?�
�88���������/A?x>#BB�
�E�s�qB�$	G��$$IG����,FJ�2d��F~E�"g��H'ry��"o�O(���Z�j��E�Q&���S�ttZ��+�
h��G����h�����1c�s�XX$���abl>V��cUX-���5���>�D��3p;��C�8��������M��o�����~��J�'�<	lB"!�0�PL('�"!��{����H$���D7�����9��������N���D�%���I�$)�TL�H�G:E�J�&}PRV2RrR
RJV**�+�U:�tU���g�:���I�$����+�;�M�+�n�g����M��dRQ6Pj)�(�)o���M�=�'*�*oP>�|A���GM��d��
��*�U����R�T?j25���ZM=K}H��JS�We��T�V���^U}�FV3Wc�MU+P+W;�vE�O��n��R���W�P?�~K}@��������\c��E�M���f�&O�Hs��Y�'4�fJc�������s�n-���[+S�Tk�V�V�����v��,�
��]t�nAg���+�u���O�F1G�G-U;����:�u�t�:%:tn�|�e��f���m�}�����M����E��^�h��^���KF��������G�������?``hl 2�hp����n�g�i����a����H`������6���fl`�0����C�%�����?�X����0y`J1u7M3]k�l�ofd6�l�Y��]s���y��z�V���	K,,z,u,���5����V�V3����[�����7[w��6.666WlQ[W[��f��1�1c�c����S�c�����=������7��k66y����c�9�8d;�t�����X���������T�t}u\�����v�u�;oq��Bs������������������-�������{��r���=>z�z�y�y��e������g��x�����x�xs��{w�0|R|��t��r|�|�����v�=gZ33��������G���<Y�X��������@����M��L���j���]���!������6`s����P��y�-a*a1a��������&�B'��p?�<B�	"��k"DYF��:6�81jb��g���s�[ch1�b������]{/�*N��?9�:�}B@BYBW���y�����I������]��'���=�er���S,���rq�����'��M�L;�BHIH���������S+S��,�z�K�o-����/�?O�N+K�I�N_�����Q��'`	6	^g�dn�|���;k0;!�@�RNJ�Q��0K�2�p����"[Q��k���u3��a�]�H����<-�#�&���$y���_��af��C�4f	g�����l�����_��s�s���]4��<����������.(Z��0x��E�EY�~+t(,+�kq���"���EO~
���X�X\|k����K�������-���[	��R�Ciy������~v�y���+�V��t]�eq�p�������i��=Y3aM�Z��������b�s�������]�74n4��j��M�nT�W���\V�~3o��-~[j�l-��i�`�������,��ww��x�3~g�/��T���U���n���=�{Z�������]Y��Hjz�M���?`c�]�����A�����z�.����������+�����#����2��;��mn�j:r�������+Nh�Xy�r������S�E�����y�<�������[&���;w�|������S�/��y��%�K
�]/��������#����W��4vxt4u��<y����k��_g_�|#�F�����oM��u�w��N���w��~���>�~����V�n���.����=�y|�	�����O�t=�>+n������xoPo��I/�_�^~�+�C���WV����g[b�k���7��������_�Q����������=�?�~J�����/�/�Zm����`����#��~0X��4����
��(���?YA�gV�	�����
@-l��������U ������q�u��&;WJ��H��5S�E~��!��-��:�����d|(R'��eXIfMM*>F(�iN����x��ASCIIScreenshot�\'�	pHYs%%IR$��iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>1042</exif:PixelYDimension>
         <exif:PixelXDimension>1812</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
�t]}iDOT	(		�e�7c@IDATx���$E����p��8� 9JF$c1
���������(�GEQ�EyP0!
(��""Y��H� ��������������������/������ywOOO}��{����@@@@@@@�=�-Tx@@@@@@L�@�
@@@@@@rsi�� � � � � � ��l � � � � � � �+@��K�@@@@@@ Pd@@@@@@@�\�\f � � � � � � ��"� � � � � � ��
(��0@@@@@@�@@@@@@@ W�@1�� � � � � � � @��6� � � � � � ����4�@@@@@@@E�@@@@@@� P��a � � � � � �(�
 � � � � � � �@��b.
3@@@@@@@�@�m@@@@@@rsi�� � � � � � ��l � � � � � � �+@��K�@@@@@@ Pd@@@@@@@�\�\f � � � � � � ��"� � � � � � ��
(��0@@@@@@�@@@@@@@ W�@1�� � � � � � � @��6� � � � � � ����4�@@@@@@@E�@@@@@@� P��a � � � � � �(�
 � � � � � � �@��b.
3@@@@@@@�@�m@@@@@@rsi�� � � � � � ��l � � � � � � �+@��K�@@@@@@ Pd@@@@@@@�\�\f � � � � � � ��"� � � � � � ��
(��0@@@@@@�@@@@@@@ W�@1�� � � � � � � @��6� � � 0&�����Y���I�\OO��x��H@@@�
�*�@@�1$p��������m�������_x��n��y��o~��>}�p�[n���������;�y�k�J+�4�����{����5�\�M�0����Nn���#������������)S�����en��WwS�Nuz����
�w�}�����w�}��v_��~�;��s���m��z(� � �,����b�@@X�;�0�����}��pGqD��������^p
_B������;�����m�~�{�s;�����/������K�QG�.N�6�)�\w�uG�
-����'�e�]����z�u�{�{�k_�VYe+C�v����>����/�6q��7�%�\r�\!��w������n�
@@@�ED�@qY, � ��"Pu������F����?��O����jD������~�����.�0q��N����|D��@[-�B�����)2}�Q7g���^{���������n��q�n�@���r�l��-�B@�;(.� �G@@�n P��5�r"� � ��T(x������[�W700����?���>�N��S��{��n��6r?���lDa�k��@�yt�T��Y���Z�_~�����T�������s�^O�&@����@@@`(����KD@X4Z
�_��D��_U���(>�����.p'�t��v�m�	'�`�	u���?�m��&v=�f��@������w�c�4~�K_roz���Q����9^�F��z��#��T�v��]���:���K��K/���g��/u��I�&���'�\oz��f�r3g�ts���S�j��ij��0�T��x�	��c���w��V��a]S�r�-g���}�[-����iR��O��l�~fv����F{
Z.�n��������&@@@���y��� � �]-0g��{��A7sn� h�I=n��^���hq��E-PT�������|��v=��:������+_��������;��c,4j�:	5
���w�]v��w�}�>���j�-<�B�00�%7��g����YS��{|���O���t����*���y��n����@��k���p�UWuox��{���Xc��@N�[#G/��R[����e��y����]�R�����-o�]d]���~������������}�����k��v�yg��w��-���
�jx
���O~���R�k�it��-���:0�.3@@@�E\�@q_A, � ���+��G���2��xWm$T�W��������/QM���
��_��}����P��SO�k2^���]�z��@������y(j�(h�����_�u�Q-��k=����MuO��\7�w�Y������x�[v������>_C�������P8[��@�,��p7�|��Y�x������������;Z��m����V�o7P���[�)������Ja��W�%_����o}�[�#5?�������ns
Dm�h�����f�����n����V�}@@@���ju�� � �������Yg�e�$\�k(>�������v?���[��V��<���n�wt����~��������Q'#������)<��uZU�?�S��'N��|��k_N�0��9]����r[o����%�X��5����O���|���u�{�[r�%��������E]�4�Ta��>�)�?c���#�X�J�����S�������/|�]x���)��~��-XT���o�F+~��p����Wy�����z���n�����b;e��_l�����e��=�@@@�n P��5�r#� �t�@��
q��lR��Q[������n8\<�y
�t��v�o~��
����?���v�S����C�SS�q]O�	Z��y����R�������p���[][�=�y��ZU�TU�4�S��+���SP������a��j�����e�����F-�[o��}�s�so{���2�,c�6T��mM����������3�^=:��6�lc�y��6b5���S��jW!�.��b���?��SNA������-���Nk��������m��V�j{W�������G?r���L � � �@�
(v��c�@@�^���NW@^��I=�zw�9s��q��s�]/Q�������V^ye���I�V���Ti���k��p-�N�����}����p�
v�r����n����k�S�*�{���-��	5�T��&=>o�<�u*R��W�������a*
O<�Dw�y��F��Z�0���
�y�7~�x;�m�E]�S��]v�0���S�y��n�M7�Prx&w@@@�. P����"� �,>�(���~N��&��u��E�W�������;��2L����k��R*���g>�����4)�z���l����w����w���
#�:
uj��������ow_��W�N�9�S��E*�pJ����W\q���G>b�R�(��I�RuJ�{���N�z�=��;���=��B~���~JQ�x�GX���4B1��
W��NvjD��0)���o�:� ��F��.�,��@@�:��[e,0 � ���"����NS� �lZ���/��(�{��V�����t��v�J/{�������PL�:�}]kO�)���4P�P�(9���i:G{��@Q�'�c___������g;��Zk�e��
n���Z�
�����
"�iTc����>�!w���Z ��yYB���!P�iV5"2���(~��tl���������"� � �]'@��u��F@X\?o���oEI��0G!R�����l����w(*R��kG}���5�yMY���w{���b�Z�adi��Ku}�|��)������r�)���n��o�u�u��������^����K:
5BV��:U�8n�����!P�����v�q�e	G�� � �t��b��8@@���~l����Y��{�G}1o~����&���,����4x�a�9]�p�G(�x����3�p��z�{��_���v���������t�M�����5��_~y+�I��Qo*��Z��I�d���������gn�]��(=������p��������saa�NE��^{���Z��:��V��<���v�m7<�0��t�m��O���i�����z���G�PT�F
��TA�/~������i��2�,��,y��@��'�� � � ��(..k��� � �u��4��r�����Q�}����j/�w��T���(*�;��s��g��V[m5�e*
/���T��Otn��M����lt�O<�>���Z��|��J�;�d��t��������A��^7i������r=M�&�����!���=�P������/���X0x�u��u
u}CM�����O>�BC�<
����
U�F�����@Q�JU�F=G��NM�v��b�P��3g�]�Qu����6�1���@1�p� � �������fy] � �DX�'�|��t�Iv�;�n�2) ��t��8�=����_���MS�L�=�������Y�f9�u����0��Moz����>�42.Ry��x�@�t���������.n�5��'�{�����/v?����
+�`��T�����~�S8��O�)���u���������T�w�auzZM?��]Gs���6����|���Z�
-�=�������s�=�Z��t
���?���W�r������
���k P"�"� � ���*@����Y^ � �����+�]\�8��w�;������3�4�
z����?�i�����j#�^����A��S��=������mT�f�mf����rK7y���&�_ ��M6��,5�o����g�u�]f>��^���}���?h�K�L�jW��F�*\��k�*����_|�=���N�j4j8-����B���4JU�dj���g���=�\;m��[o��\sM�m@�����������nfx
�+�Y � � �X(.��� � �@:���N�\�9U���������e�������p�
��#��`J������;��u�Y-����k��Nk�Qp�x�+l$�N��(����Bw��!���c������Q�8}�t5�P#P�]v��Wv�����no��6��3��HR��UVY�F%jD���^j��G?�Q��w���������O?�����tO?��=o��	"*@���{l��W\a���Im���:��c�!n�eN�^����� � �,������e!� � K@��5�\c�lgd�?��;��c�4�a��;�<w����?��=������w�M7��w�����N
!O^E:��Nk�������w�o����O�rtLG��0q�����i
���R^[<^.�
�4B�������k���}��V[9��4i������w��W�HU����[�i��������n��F���g{�����`��k�y�x�!�����m<��F;j]+���idb��h����m\��<id�g�a���2!� � ��*@���k��F@@�X (����]�JXt@@@`� P\��1�@@X��U�!� � ����4�@@@�%@�K�z@@@���7�F@@@�� f#� � �����"�2X@@@`�(��5��D@@��A�@qqX��@@@��f���������q��l�Y\@@@`l	(�����E@@@@@@�#���(� � � � � � ��� P[��W� � � � � � �@G�qQ@@@@@@��%@�8��7�@@@@@@��;��0 � � � � � �cK�@ql�o^- � � � � � �	(v�Ea@@@@@@�����Z��Z@@@@@@: P���� � � � � � ��-����y� � � � � � �t$@���@@@@@@[�ck}�j@@@@@@�H�@�#.
#� � � � � � 0������"� � � � � � ���bG\F@@@@@@`l	(�����E@@@@@@�#���(� � � � � � ��� P[��W� � � � � � �@G�qQ@@@@@@��%@�8��7�@@@@@@��;��0 � � � � � �cK�@ql�o^- � � � � � �	(v�Ea@@@@@@�����Z��Z@@@@@@: P���� � � � � � ��-����y� � � � � � �t$@���@@@@@@[�ck}�j@@@@@@�H�@�#.
#� � � � � � 0������"� � � � � � ���bG\F@@@@@@`l	(�����E@@@@@@�#���(� � � � � � ��� P[��W� � � � � � �@G�qQ@@@@@@��%@�8��7�@@@@@@��;��0 � � � � � �cK�@ql�o^- � � � � � �	(v�Ea@@@@@@�����Z���v``�=�����.(,�����m��
ef������~����=��Sn���n��I��/��h����+����������/�{�������vO?���7o��2e�[i����o��_~y���;�y�<�������}�����y788��\rI��j����[�-��r#������>������O���Xc
��:����^Z��{�1�����=�������~�����s���S��x � � � � � ��.@���k����9s����+�.��RX��g������
�y�����_�~�������/���v/���[b�%,p�n���^{�e�����������v���/��
������M��^��W�v������v?F��o~�w���[o��BB��
�^���ov���������;
/��B{��w�i�gOO����n���q���;��V^y����=����;�<w���[��0S���*��-������~����2�@@@@@@�H�@��VV�E����|�;���l��Zk��rt��>�1��7��I#&~�K_r�]v��q����
5�P�����w��}�sn���v
���w�s_��W�
7�`������;�������������s�,��=o�����s�q'�|�{��GlD�
+�`����hG�h��G?�>���/��w�)��SO=�i4��Q�������T�~�;��C�y���{����3������k�(F��|���,��H�O~��n��vn/���
@@@@@@ ��bl�.�_#��:�(��_����8�M�0��U�t�������?�y�>���]w���:�?������m	�������n���6:��O�s�M6qx���T5:Q�����o}������TF�U������?�7���6Rr�m��y����?���,���t�TMzm{����6|�;����o?��f���R���Z{
8��zkw����hG��<��{�k_k�p�s������^�*@=����-��b���/|���� � � � � � ��b @�����^�F�����|�;mD����g����W��m���N:�$;U��D�n�N
���O�z�E����NetJ�k���F5�}�����s�������iYtm�=���]u�UV����o�:��N�>�h-�s��vjx����7��zH�M
3�9�;}���-��b�ye���~�S�rs��u_����^�~Ua�Ga�Q����W_��y
KU^�h��l��6���� � � � � �t��b���
�_����K5�O��}]SQ���)Ju*��S�Z��S��I��N8�;���:=�y���<�He���z�����c���~��t���8�y��{�;��Cm��N�������O?�F�:=�������N����*�|����N;�4����
u
�jf��S�����s7uzV���|�#������O�>�]w�u��_���|T��6�@@@@@@��E�@qqY�����{�����M��N�y���u��W���N�@�y���t�a���A]�P�$��?u��������nT��y����������>]�Q�_T���p�~��n����Q�:���C�����l��F5.��������K.���U�B�iO5���.�����]Q�0uj�����O�iV$��^�FI���N�/��b����[��}��?�t��/������-2!� � � � � �������&+x=��]7��_���D��y���w���'l�DM
5�O��y��7"�S���z�B�Gy��:�.����O>��������K,���Oj_�[g�u���
7�h#��~px���O�4i�9��S��t�o~��-���CM:��7�l�W�q�m�����o��YN#):� S���J��Cn�����Gu7�t��x�����B���?�}����@���2�G@@@@@�U�@�[�\�����;-,�)L�[n9u���K-�����k���N7z�=�8���u5������55�P�Fm��m���v�F��u�]�:�
>�`�S� ����������v�S�j�������v}D�^4����5o��8_����'�x�f)�k��ok�"����:�����.�������iV��_�rk������-�*�<����N�����w����}@@@@@@���z�U��
��c�`��3�p����������q����=WZi%;��NWz��������*�<)��|���m��fev�m7/O9����~�FF6?Omj��2�,�^x�]�����2�]Q�f���r�-���K/�t*SMk������{�F������zu:T]�Q�(�}-��T��l~��)P�(E�Z�N�c�9���N��iY���)[�@@@@@���A7� P$@�X�3����=�=�����u]���'�P �������t_����:�
uT�F4o����E�~T�����v;M�E]1o����������7�FHn��&n����������-�k>���o��F(jt��q�i���sw�u��P�5"�w�
Lu
I���j���_���I�f�~U���NZ6�_��W�>����d:���,���9��U��%��s)� � � � � �x	�l��}���+��T-@�X��b^�K/�d��W\a!�G>�w��gZ8��������n���#4�O�{�1�������~��v
�������8e����i����Q�'Nt������p�����*������Oa�BC��TA�������-#N�:g�;<�@�S�^~��v
E��������7������${
E���L����������>�X0�S�n��m=O!�,��;���5:U#V����9����	Z�W�,��kE?��p��W�=���)�5_?p�>}z���>�4������V?�
���V@����]8���vjk%�cb]\��:kS}7�et����7i�`��������]��cG"�+��~g��a���MK��nM��:v�~E����c�g[�g�>C���U�_��:f�@���������}��w���+^1b�Kj}�4��/�2�^w	(v����
�����}�kN������>��O��=��S�l����e�]�CJA�;������Z(�pO�51;��7�lT��NG�����hH�s��G���;H���]v��w�}mT��W_m���mosW]u���x�;Ft�+0R��zU��.�k'*\������-��W�z����?n��U�C9��������N�z����k��[����^��>`WXa��
��	��_�:���Z���Z��2��D��\r�>���PE�.fJ#��{m�����GPi�b���f��n���'�M���?��3�I���3�P��~�,��5�����H�Fmd��q[�v	h��v>~�x~l�p���\��%�\�+$rg���������?��.�+���[������;������V� P����k��?�a��~���/}���x��Cu�B��S�����]z��v�O�-
_����pP��S�������O��u��s���zL��u��>�.�������F�v�in��W����k~�c�N���4���?�����>g��Yg�e�u�F�Gy��ll0x�����g�m���t@�S��T����7ltfs�����/~�����~�����T}�@�j�����b� P��Z^'�b�QU%��������*M�X�d��(�oUeI�*5������'�\�X���(����>&�j~���61�(��m]7�bk���YW�����o� M���������s�m*<<��c���/o�5BNA�I'�d�=��C�G1�y����:]����S�������
)���I_T*<�����B��/�����'u�T��4;��ZjO��T�Z&M

������N8�)��N�\s�;��c�}���>���[X��������Q�
CWYe�������~�F:h���%s"P����n��.�%P�-��~��.1%P��Z^'�b�Q��1T��$P,��5�@1���z��i����#� Pi��1���'Pl�H��b*��(.��^w
(v�z���
�N?�t���:%�����[�N��/
�>�F��t�|����(?}�h�F�i��F�i��N���^��������z��6�P��t=E��T�u}E�.t�-���wh�F5~�_�:~���9��:���>�>����n����(I��F�����~����iMU���.ro��yi���{o��OXx���>������L��U��T��S����:5�Fc��
o�S�}���S���?:]���;����F��Uf�N�Z�
#P�R����s���b����G���S��P������x�b���A���WU�	��,����r�%c���I�XnTu	�1U��G�X�k.�b,��z	�m�������,�:6o��F��Q�i�kh���
��i���nk�7�l3��)4�hAuD+�S0�s�������=��R#�B���3]wP���Le
$u��'�|�i�����w���N�����N��s�����on��E�������v�����)X���
�t�
u!�����)T�����^��x��6�P���<=�}~��/�K��J+�u5JQ^���:�t]=��T�9n�8Um"P�F�[1�b.M��Qys+'P���|�b��mUH��S��+'-��@��(J�(�-+���%K�	��l�@�%K���D�Q9���$(&anh�@���?�P�@�WZ�EV�W\������.p��|
S4�o��W�N��[la��e��B����?���d�Rx�NS����r�o����y:���O���s�{��gmT�?�Vu�M6�S�n���l��)���F-�BD]�Y���Sm95BR�(�e�n��F*�T�9c�)5br��V���p�n����>�]}��v�S�H|��G�B�
�O�n#u:T]�Qu��c���@q�I�GS(�l�@q�I�Gc��K�X�k.�b,��z	�mb�!P���X7�����"PL%���b�G�����P^������Sj��"PLoN��
(V��X�6w�\Qx��W������N��(C��k5
Oa�������:���
*dS�����S��Z*���G����O��4�jW��'���x�w���z�f���:M��5�\��)����x�����G-��^n��,��f�mF\#1T�S�&���n���|��I���?��b"PL����b�G��SI7�C����/����u(����C�S�u���]b?J�[xA�t�/�Hy�@1����X���>&�t�����5� ���@1�5-� P��J�D P�F�[1�b.M��Qys+'P���|�b��mUH��S��+'-��@��(J�(�-+���%K�	��l�@�%K���D�Q9���$(&anh�@���?�P�@�W�<������j�@qt�	��(����D���Hw�@1�uh�@1H��%PL�Mg:�lK�Y�t�	�Y�����4��i��[!Pl��7�b|cZ�+@�����\�@�r��
	K�� P��ZZ)�b)Qe+���"���*+L�Xe�(�MUiA�J9+����'�L�h��(�D��>&
kn���4Qg(F�mY9�bK�"�.ZY,* PL�(�7W����N����@1�u�%��F�����CK�A"�-�b:o:��Yg["P�j��O���:��>&H��%PL���
�b�H��	��B\�����@�����VH�XJ��b��J	K�*+@�XeG(v�UYa��(���@�m�J(V�YX���<�f(F�-��@��'�L�1QXs+%P���:�@1*o��	[��`	(v��bQ��b���@1��Z$Pw�t�����-(f5��'PLgZ"Pio	�y����:��bV#�}�t��%�1A"�-�b��V�E��M����
(���v* P����B�R�(���VJ�XJTY��(;��@�#��
(VF�vE�mSUZ�@�R�����/��6�@1ma���<Qf�����[)�b.M��Qy[VN�����H�@��V����o����"����(�s'PLg�m�@1���>�b:���b�H{K������t������(��-��	in	�87�B��,�o����W�@1�/�#P��b���(�E)@����R�R��
(VF�QE�qUV�@�2��+"Pl������rVFg!O����h+&P,��2�}L��J	si�� P����r��,<�E�]��XT$@��~; PLo�	G��@1�;�b:�lK�Y�t�	�Y���D�[�t�t�����D���Hw�@1�uh�}L�HsK������f��(�7����q}���+'-��@��(J�(���(�UV�@�2��*"P�������Q�]�b�T�$P����2:�y��$P�F[X1�b!O���c���VJ��Ku�bT���(�d��. P�����" ����bzs�H�8:����	�Yg["P�j��O���:�D�$��(����?�u�%��F�����CK�c�D�[�4���(6����@1�1-� P��K�T.@�X9ii���DQ
(Fa-��@������QvT�bG\�&P��������� �b������_�m&�b4���	y��d�5�R�\��3�����@�%v��b�,	(�����E��q'PL�N���:��bV#�}�t��%� ���@1�7�����-(f5��'PLgZb$��(�qnn�@�Y$�����i!��b\_jG�r��IK+$P,%�R�@1
ki���D� P�����;���0�be�mWD��6U�	+�,����B�h3	��VL�X�e&��(���(��D�A���e��-Yx���he��H�@1�v@���\-(��;�b:w�t������(��-(��������Og�m�@1���>�b:���� ���@1�ss+��"��&P�oLq��R;�(VNZZ!�b)Q��QXK+%P,%���be�UD��We�	+�l�"���*-H�X)gaet��D�I����b�B�(3��Da���@1�&����-+'Pl���]$@��E+�EE@������j�@qt�	��(����D���Hw�@1�uh�@1H��%PL�Mg:�lK�Y�t�	�Y�����4��i��[!Pl��7�b|cZ�+@�����\�@�r��
	K�� P��ZZ)�b)Qe+���"���*+L�Xe�(�MUiA�J9+����'�L�h��(�D��>&
kn���4Qg(F�mY9�bK�"�.ZY,* PL�(�7W����N����@1�u�%��F�����CK�A"�-�b:o:��Yg["P�j��O���:��>&H��%PL���
�b�H��	��B\�����@�����VH�XJ��b��J	K�*+@�XeG(v�UYa��(���@�m�J(V�YX���<�f(F�-��@��'�L�1QXs+%P���:�@1*o��	[��`	(v��bQ��b���@1��Z$Pw�t�����-(f5��'PLgZ"Pio	�y����:��bV#�}�t��%�1A"�-�b��V�E��M����
(���I�@IDAT�v* P����B�R�(���VJ�XJTY��(;��@�#��
(VF�vE�mSUZ�@�R�����/��6�@1ma���<Qf�����[)�b.M��Qy[VN�����H�@��V����o����"����(�s'PLg�m�@1���>�b:���b�H{K������t������(��-��	in	�87�B��,�o����W�@1�/�#P��b���(�E)@����R�R��
(VF�QE�qUV�@�2��+"Pl������rVFg!O����h+&P,��2�}L��J	si�� P����r��,<�E�]��XT$@��~; PLo�	G��@1�;�b:�lK�Y�t�	�Y���D�[�t�t�����D���Hw�@1�uh�}L�HsK������f��(�7����q}���+'-��@��(J�(���(�UV�@�2��*"P�������Q�]�b�T�$P����2:�y��$P�F[X1�b!O���c���VJ��Ku�bT���(�d��. P�����" ����bzs�H�8:����	�Yg["P�j��O���:�D�$��(����?�u�%��F�����CK�c�D�[�4���(6����@1�1-� P��K�T.@�X9ii���DQ
(Fa-��@������QvT�bG\�&P��������� �b������_�m&�b4���	y��d�5�R�\��3�����@�%v��b�,	(�����E��q'PL�N���:��bV#�}�t��%� ���@1�7�����-(f5��'PLgZb$��(�qnn�@�Y$�����i!��b\_jG�r��IK+$P,%�R�@1
ki���D� P�����;���0�be�mWD��6U�	+�,����B�h3	��VL�X�e&��(���(��D�A���e��-Yx���he��H�@1�v@���\-(��;�b:w�t������(��-(��������Og�m�@1���>�b:���� ���@1�ss+��"��&P�oLq��R;�(VNZZ!�b)Q��QXK+%P,%���be�UD��We�	+�l�"���*-H�X)gaet��D�I����b�B�(3��Da���@1�&����-+'Pl���]$@��E+�EE@������j�@qt�	��(����D���Hw�@1�uh�@1H��%PL�Mg:�lK�Y�t�	�Y�����4��i��[!Pl��7�b|cZ�+@�����\�@�r��
	K�� P��ZZ)�b)Qe+���"���*+L�Xe�(�MUiA�J9+����'�L�h��(�D��>&
kn���4Qg(F�mY9�bK�"�.ZY,* PL�(�7W����N����@1�u�%��F�����CK�A"�-�b:o:��Yg["P�j��O���:��>&H��%PL���
�b�H��	��B\�����@�����VH�XJ��b��J	K�*+@�XeG(v�UYa��(���@�m�J(V�YX���<�f(F�-��@��'�L�1QXs+%P���:�@1*o��	[��`	(v��bQ��b���@1��Z$Pw�t�����-(f5��'PLgZ"Pio	�y����:��bV#�}�t��%�1A"�-�b��V�E��M����
(���v* P����B�R�(���VJ�XJTY��(;��@�#��
(VF�vE�mSUZ�@�R�����/��6�@1ma���<Qf�����[)�b.M��Qy[VN�����H�@��V����o����"����(�s'PLg�m�@1���>�b:���b�H{K������t������(��-��	in	�87�B��,�o����W�@1�/�#P��b���(�E)@����R�R��
(VF�QE�qUV�@�2��+"Pl������rVFg!O����h+&P,��2�}L��J	si�� P����r��,<�E�]��X��%�������>#^�W'�Zk���Xb���{���;��C���rVQ��WH
m	:����q}}}m=�B/�������������5�o)��6S�s������h
Qq���Y���	&�� ��1�l�j�/�c�����-'N�c��j��<���s��'�q�_�����>�L����[����&�-�hUSV���w�4i��j*]�Z�Yf��-��X|*��X\�����/�_��Wu��x�;���;z�@@@@@�����/O�8�V�B�Z��&���tIW]u���?�pw����N8�m��F
�W[m5����7<�/�S������RK-��RC[�5�~���rS�Li�9Zx��z���;����
�/<ga
r��}4w�%�,,���d.{�fY~Z�+[�k����l���+��4J�)��N�>c�� �6mZ�i�t:H��J�����Q�(�Q�^�i�UWu������/���om�:s���S�6F����k��c�0�`�8��������Y������>/�p��[-h_���Zc������J�]��L�+@����XD��b��5���E��8:�\C1���4?����!��r��kx���5Gg������bzs��5��s}�t�����bV#�}����:��>&H����i��[���"������i!��b\_jG�r��IK+$P,%�R�@1
ki���D� P�����;���0�be�mWD��6U�	+�,����B�h3	��VL�X�e&��(���(��D�A���e��-Yx���he��H�@1�v@���\-(��;�b:w�t������(��-(��������Og�m�@1���>�b:���� ���@1�ss+��"��&P�oLq��R;�(VNZZ!�b)Q��QXK+%P,%���be�UD��We�	+�l�"���*-H�X)gaet��D�I����b�B�(3��Da���@1�&����-+'Pl���]$@��E+�EE@������j�@qt�	��(����D���Hw�@1�uh�@1H��%PL�Mg:�lK�Y�t�	�Y�����4��i��[!Pl��7�b|cZ�+@�����\�@�r��
	K�� P��ZZ)�b)Qe+���"���*+L�Xe�(�MUiA�J9+����'�L�h��(�D��>&
kn���4Qg(F�mY9�bK�"�.ZY,* PL�(�7W����N����@1�u�%��F�����CK�A"�-�b:o:��Yg["P�j��O���:��>&H��%PL���
�b�H��	��B\�����@�����VH�XJ��b��J	K�*+@�XeG(v�UYa��(���@�m�J(V�YX���<�f(F�-��@��'�L�1QXs+%P���:�@1*o��	[��`	(v��bQ��b���@1��Z$Pw�t�����-(f5��'PLgZ"Pio	�y����:��bV#�}�t��%�1A"�-�b��V�E��M����
(���v* P����B�R�(���VJ�XJTY��(;��@�#��
(VF�vE�mSUZ�@�R�����/��6�@1ma���<Qf�����[)�b.M��Qy[VN�����H�@��V����o����"����(�s'PLg�m�@1���>�b:���b�H{K������t������(��-��	in	�87�B��,�o����W�@1�/�#P��b���(�E)@����R�R��
(VF�QE�qUV�@�2��+"Pl������rVFg!O����h+&P,��2�}L��J	si�� P����r��,<�E�]��XT$@��~; PLo�	G��@1�;�b:�lK�Y�t�	�Y���D�[�t�t�����D���Hw�@1�uh�}L�HsK������f��(�7����q}���+'-��@��(J�(���(�UV�@�2��*"P�������Q�]�b�T�$P����2:�y��$P�F[X1�b!O���c���VJ��Ku�bT���(�d��. P�����" ����bzs�H�8:����	�Yg["P�j��O���:�D�$��(����?�u�%��F�����CK�c�D�[�4���(6����@1�1-� P��K�T.@�X9ii���DQ
(Fa-��@������QvT�bG\�&P��������� �b������_�m&�b4���	y��d�5�R�\��3�����@�%v��b�,	(�����E��q'PL�N���:��bV#�}�t��%� ���@1�7�����-(f5��'PLgZb$��(�qnn�@�Y$�����i!��b\_jG�r��IK+$P,%�R�@1
ki���D� P�����;���0�be�mWD��6U�	+�,����B�h3	��VL�X�e&��(���(��D�A���e��-Yx���he��H�@1�v@���\-(��;�b:w�t������(��-(��������Og�m�@1���>�b:���� ���@1�ss+��"��&P�oLq��R;�(VNZZ!�b)Q��QXK+%P,%���be�UD��We�	+�l�"���*-H�X)gaet��D�I����b�B�(3��Da���@1�&����-+'Pl���]$@��E+�EE@������j�@qt�	��(����D���Hw�@1�uh�@1H��%PL�Mg:�lK�Y�t�	�Y�����4��i��[!Pl��7�b|cZ�+@�����\�@�r��
	K�� P��ZZ)�b)Qe+���"���*+L�Xe�(�MUiA�J9+����'�L�h��(�D��>&
kn���4Qg(F�mY9�bK�"�.ZY,* PL�(�7W����N����@1�u�%��F�����CK�A"�-�b:o:��Yg["P�j��O���:��>&H��%PL���
�b�H��	��B\�����@�����VH�XJ��b��J	K�*+@�XeG(v�UYa��(���@�m�J(V�YX���<�f(F�-��@��'�L�1QXs+%P���:�@1*o��	[��`	(v��bQ��b���@1��Z$Pw�t�����-(f5��'PLgZ"Pio	�y����:��bV#�}�t��%�1A"�-�b��V�E��M����
(���v* P����B�R�(���VJ�XJTY��(;��@�#��
(VF�vE�mSUZ�@�R�����/��6�@1ma���<Qf�����[)�b.M��Qy[VN�����H�@��V����o����"����(�s'PLg�m�@1���>�b:���b�H{K������t������(��-��	in	�87�B��,�o����W�@1�/�#P��b���(�E)@����R�R��
(VF�QE�qUV�@�2��+"Pl������rVFg!O����h+&P,��2�}L��J	si�� P����r��,<�E�]��XT$@��~; PLo�	G��@1�;�b:�lK�Y�t�	�Y���D�[�t�t�����D���Hw�@1�uh�}L�HsK������f��(�7����q}���B�x��'��l����{z{\����w���F<�����,�z�O1��������2����y�b�7����b��q'PL�N���:��bV#���%P���78k�sCC�xC�np�l70cF~���������$��g�����>=6���,S����#H�<���������3�69���!740��?������^t���Mz`��n_tC������������7��z�|i���O|�����I�]��;��I�o�%]���_�1��o�}KL��������%������>���:��K��|��B��O'P�/��i�c��x*���V�S+@��
��(��	(.r��B�X �?�i;�����(����B�T����/�����V��q�A!d��;y���0�||]���7��J�|G�u���+-����������-o�&/:���a�e�.������'��f���]�8��e
O�v����$(&a�F���;�;��|�e�18K��s�w
7Lz��<�AI���=�������u�����4��epV�e�r�Nj7����y��{�����������/�?������A���s��}�>��~[?�iwR���;�;������"���&�\������6;��y�_G���_G�������C�y��a���;~��u�C������������+�q�3�4=i���@�l���
�O!G�����6��mg�����B�MC~��o��"~��C�v��5T�k���	����j�?���?
e�'��l	��m0L
nt��7z{h�/�r}~{�:�?W��|���w?���I?B���c7�������O���
�'����@Qa���|�W��l;��f�V��:��=�5)������O����������_{��}c�[m�~�}������mQ���m�y�S��r�Oe����q�\	�~���>CT�v��X��{��J����=�����k����~_�2mw}��r�3�������~u�����i>|�1����N�}N*h�|�������
�������=���#����~�8(��������f�����!���������m�z�]���}����Y�
M�G�/�m�v���������{�.�wk�>����(�p"�*���������5<i����7������\�q�l�%���?��Ny�A����t\1�,��6�`�^�I��O����xP?P�_j)�
�}���������P?����}����mg�)�}�T����f��}�|�����?�����}�m{h��cL=�c�V�Um����1��o7L�X���C����A����* P���
�+�s^�J���#���m���u����WU����PXH3�;(|�ZY�j_���QR�:���������Z��u���|���u�4=��eu��$;���K��=:��_T&�|�k�i��_~�F.46^����_N�����LGd����c���%����/�����T���U��W���,���a!X���B/������r?8�	�AU�4�@M����i��
�|���g���}z�$�Y����<�����/u�����_�!��-'�)laH����ES�qN d���Pn|	�g�y���l�CCj/�y-�Smh�r�%[[���m�6���y�Lh��+l��h�~OO�a�*��#,�%}�.���L}>�����>��>�j�_�TT��y�G���}�n�/7�������m*S��L
��L�!��s��r�IWc�/2����q���5n
pj?(�m�C�fPw��������O���:^�/8nhu���O��B7=�����K�_���Bz���suRO����d���F��C~�j�(Mg���oUO�B�da�Tp?)���V���]Z��c=
>��d�x?�i���I���;�j�/�;��>p��T���������sl����~���?;|�:�TW=0��2�e�k�mw���kj;F����Q��>4�(�o��A�\�k�x�-�"����6���Z���C��l���m�W��l�\�Zm~{��R{|���9�����5�p�4
�?�m�Oe�I�;�|h�P��?���QE����}������=�N�y
��C$������_)��Nh����;�W��$�<�����A�>���~�|�_;�������V�������dZ��}p}�gKY{��}��q������)�G�����g}�7���m�@:���������q
����o������~���yR���hCy���R��i��j�������]S��l��^��S�g���~�[H���z��i�o
����~���Ma\�����
��4�(���]����d�nk��(L�Nt�m����A��<��~�1�-��O�#�����~����0����=������}p�p��b7��U_�c�A����4��/�k5�u�}��C��c?�?��a������H�O}��	�������M���&��l�?�vf�~�]�D�X�dg�,t���������J�e;�����Nz?��6�>|@?��{\���~^����@���}�M�~�{#o?�mP��vF����������6_?��}r��_�oKX]����k���~�c�0�X������I������?p����u7��/~���m�C�g���������E`�G	�f�o�"P�o_�Xx�:����E��7���I_�Zu
�o;�h>j�ih��o2b�/z������;u����@k�����eX���w��(l�����;�n�b_Pt�������#F&�_�.��rC�U���e�>}���'s�������@�FgX�����/�
����+s�J����CI�8�}�VG��N������wB9���u�Z02�~��/�����oVg��}�K��c�
� �r���_�F�����?Oo���_�:(����:�����5�B	��C���;^����@�c�X������S����w�1� �-�T���~�����;?-����@@�~;����:�W�V'V��Y[����A��o��3e����Y���������������E9���[n��F������;����o���y�cQ��:�����W���k��������v���g
 ���Nu�U'��������u�W����KO�n��:F��PlT�}~d���8��46��w*�=T������e��=48���,��:�������ja��gzo���tV��x,���*C��}��I����}�-�/�yM��l�I���z�����dZ����y���:�����{�yR��USq+6�C?�H.�wk�m�o/���P���������~Z�������m���n(�����������W��&��|&�_���_o|���bq[��*t����t_��W����`m?�}���y��f��@��������D���\���>��X%u�k;~iI�8:[R�����~�c?��PpN�G�����v�t��
���\��~T����w�{���������}c�Uc�����k���[��Ei�>�����U��k������}m�~:m�a\������:~���Lv�����6�k�����������D#����6"Y��
�k?�����e�{x����(���K�dE���(���nn�UW�Z���`��zcxn�}��;�Z�h���:���$bB@��0��������=�`('��h��_W����q�z������z�gOU�"�����d����a��lT����@T��:����[��I��E(;"��k���� �<����`��_�����ZZ���v��w
�S���{�:��M������uu�~��������S����zG�:���W�~�_7�#�&�=(������zL3���������+f�S�����cJ��F�|A���>)x��5���E$��4��j�ph�����h�~v5h����62.���~I�0�������
��q�W���wB[��9�W�bS�o�6
4���J#�����+���,;��a�cu4�c8t�������4�@�����a���k�F���?�I
���Fm�1���0�:��Y���>l��_�8��q
��in���F���M�	���1�/F���yO��
)������3
g����k#l����L�ntZp[
����t���,�S����������;�{��	
j��������t����@�n��\;f�p����������2K���E�B����k���������������?��T!��}j}�i�!����II�;��?5R����Q���������l�o�?���K/��H\�c��*F����c�M�)�m�������������&��Fu�����3����G��g�?�B�s��������t�kgq��[�u��5_?�>�i�����Q��������?�~6�
�������5O�����C�M�6�(���"�~������#���R�n�7�?��&�����/��������0�'�T�qu&���mL�����|�@�Tk���&y����mv���j����O���W�B��t0��O�P��,~��'��q�������_�6?�Y�Y��R���5u05�����k:�N�ef��U9�\���>���:���� 3��VN����a�����eQ�>�NV(�o}G���H�e�I_�j����/���������%@�;8���}����\��e�^�M����q�J\���_�/
�������{�>�������p�����G�s���i��y�}-�������_z�o�BBFv��[m���2�Ax�m��/�Fl��X�mJ_�[N�9��udGL�>�y�jRg�_��?@��}��u�f�'�U�/>
�I������!L����]�������'�*L�����t-�0����D����1���[lmL�N�a}���z����c�[u
�s!�G��vz�I��a�>�:�2��V������mb	�#��V�=<I�i[l���2Z>y��p9��������S}~[�����yt�]���2/��S����*F<��\����mB�nj�5!P����>{l���F�dFQ��������<������
�����u�����v,���Km�@
����@a9�[�y��&l?��e�8���I�>���)��~�
���1�a�
�d��������9|��,��m\#G�d���d�o��o���:�k�4
��P���d�����S
��]g�m�o��V?��mS�9����_���D���c��h��?c���u������l;
�1a�S��;�7�����C�?j����M�����j���������1�BI�Su�k}���x�������fm;���LW�������as��|��B���kp��B���0�>V���BB}6h������)���:���1�4�D�mZ�z�~���-�/��	�
�\�������:�m���:��{}�nA��j���������i����[6��cP�S�c���t��F]6>����A��w�������E�'j?;�o��U�����/�S��r�e���������PV��������s�ok���������V����`k?���h?����{�w��X�[�������D�?������F���wb���o������}��x������6�\�U_W�D�c�etL�m���)A
�4����F{��)��~��/l����bT���/k�[�����u����J�{��c�����1�}�����iw��M?z���^��ZA�>/�9���N����6��}�������>����N��W3�><V����?�d��|^�B(.OE`4B���/^�6|��|��zL:����1��i\���X^�B���/:q|�A�/�&����U�n{�x�n�3�!������v�`�}�]�%�����	�oc�qpS@B�Z�����@Q�e����E9���_@}�|����V�M���5_�u�X��yX"��9���u�5�����zm�������V����8�R'�F�6���B�:�l����em>��A��X(Db�#���%f���Nc�/T��[���6&2�Wh�_����d-x������:P�ix[����h�Qp�_�����s�6�/�|�~9l�Q��mD���.��4&u�������}���6e�5��C!�X��v��;�0��_�����ZP7�y�N����!�Dl���B�N2g&���skg��V��:��4qz=~�?0��(W�e�KE}Qo9����#�_^��e�e����kA��������6�0Y}��X_����z�y}C��0��U5�fe��(f�N�ce���'x��n����A����W6V��/u����j?Jc�������~}�_�h}���s���=�F�z�>;�Uj��g{�o�&�rr����do�l��R�|�\���F1�_���s�����>�o=~���_oy�������w>�Xq���@�����j������j��=����I��n�
e+����}������N�];
w�6�W�m^��3���:f�im�mO�g��7��@�s|��~���~L��QS)�zt��74��x�i��b�����������~T������
��k�������B�1�F.�����?�G�����#�V/�_�>�=�
���I������<;�=��Y'���w_�>w��e���;�;y�f���>^�b}[S�����vX;�Bm�o���G��������6�p"l�s����N��m�F�|Y]���@�87�-8����s_���o������=����~�?����mUY�������)Hi����k�(�]��h�6���<�/���M�q�<�M����<�WXW�����]�L������;I���Bp�m���w�qg�t��
�`��)�B�{���@*��$��BB���Fz�	�H�w�mz3���b�M1��%����oV+�NWv�vFw�o>��vg�������|�y����5�	<o�F]�6��,���~����) ���*���������hn2hc�/�k��^��a�s�S�s����f��#?N2���q�o��y��}�O=<�E��q�Q}� +.��?E���1��_��s��=�E_c�~�����w�je~����e�{�����``���u�z��e �������j��6,��MT����)z��}fSV��=`�����yK����O��e=_^���k��{(n���t �%�K����5��U#��\x�����h�)��)���4�����&���v9�%%�=F��%���������_+~F|��K���F7�����&������+1�����k���n������o:e�����S��5/�<�a�N���Am�c��A�X�>���s�����E�	���~����y����^�
��i3����y�9�6���5c�^�%���	�����l}�������m#�s�EN���]���v��40�������_3/�5 ����J�m��
<�G��#�����y1��s��F56�O���(����q��!�����Q��4���q";?'�F�=�}sM���{��j�y����u�hw��	�>��s1����d��Q�5�{cj���TG{��l7��=hYo�n�z����:����5�37�6��h�3��	��=�ej�Ju�t��\i�/�6�9,wA_�o\&P���_�
�@q�S���3�u(��j���X7���C��������|5U��X���{������c*=@f��k*IR
����]���
��Nj�.b�.�@���A�����~��{���z�j�^&S�LI5nY{��N	R������>���d��&�cZ'���Y��Q���c��i�)bR;��	�
�}]�l�f�<,��`9�[������w���p���C7l���'O������s`;ToT����>�D�i��@�2���$��a�����l����Q�AhL����
�����p��p�@+�p��v� n���qoBzu��,�`m���P��������O�h�>����_\�}�1����/�}��s�zPaJ�j���o���(�'��^��eRR�T����mx03�)&�O���)��-":mg��������+�/h���E�x�
Y��$�1��/a0����F���S`��GQ�Y:f1������'DI�����F)��`&�dJx��PX���0����U�V���_&N���k��&�8��k�h����q�FI�nq��:��`�-PD?���a���/�S`��|�\��}���Kx9�Zk�%��p�g��r���ZO�������~_F5K��J��1��{���O*������$�]�h��j �� L��W�~bT��oF�����SB_nK���������~m5�m���U5^��s��C��6���J3x�������]�j �Mmb��@^'�=i�b�yq��k]��G����$S.�{��`p;_
�N��l�T-���f�~�=��������e����x��
�]w���6o��n�|v�S�����T��G��|5�����M��!�<xg�����7}P�g�1`��P���r}������r�M�4���AAuZ��W��q����~���M�
�9�wq�2���@��p���o��WX�<P�7H�}B�R���&��[�I�u������F�v���DjT��3�����i�������_���S����So�z]6���M�zLI����Y�������p^S!�iO�-���U8�r^3Eq1��FH�l2�p���m���Qj�D/����3�g\�d��k�l����M����O����>j��a1�~m^TRXe��q
ixL��@"�5�L1H\_�����v��~��^��o�F��ET�T����0���o���0���G�����j]g<uY��^r���V����k��~T��=P��]p����Es��xyF�M&T���8t�>q��(r�Ym���To�H����3��]��^0��������G�6}"x�j�)��G�����-�D��S��7���������v�G�8���@L��Pp��}
�-�se^T1��>�_�53�6c�
��5� ��C�v��JM����M��$���_�z����~<x�D;��	C��n|�Sk�2��b ���
����9�����f$D(>D*���_�7��
����O�a+}
����=61��	��V�M3���Y��M�<��B���xp8�c�v@z5���Nv!�!�Q�a�ce��������z�!_�2��)�Uo���_�t���v��P�����v�
[����Vt�=��e�u[���F��"V�p��g�7�����72�����N�b��{	2���$��O}F6o��#:d��A�0���b�$��7��{<���?}�O<��	x8 ��Mb��4/�EH7$����3Eu�Wm��@�_N������p��C�+D���P@
���_���������y1��r�:��3����T��S�A�>��A�6�q-����7��i]�����4�Q�`��3�N���n��T�
dP/���2d3������d K��wk?����}�����K ��&i��[��}���n$�%�n��$��]g������(�M�AE�S7<��o�{��'��m��F�S��sd��B�������@j���f�����G@I}0�D������_���S�Ux����e3���V����x�-�<���e�]�?0��4E&OB�U���~�+`a5B���Z�=��%4d��7��~��f�F�w�n7� �M�"��������&�G��H>a�=C�i��B<,��
����������Fj{��0��VC��r4�J�H�N��4���~������W��2�r	}67��hK�.�����7�%�f54i;������#���/��Z�1
���6�.�ua��7^��������yC����fkc��U���:��@�Z_V�D�m���p�h�5Z	>�
n�w=v����J�`lZ���a�Z}x9d���f���n;=%z^"$�D74��7^��-5��b����L���~���,\�� P$3Q��Q���Z����#����`�;����9�	��N�����rEy��8���XW�V��[��?��������|U��L;��x��G*����_C�J���sd�<���)�w��I��HB�&���]��Q���5��r��	�f�F3��yS�Lz|�
����e��R�C����J]��)\�$/�RF:u�F�P`P�����?�6�`��N	5� a:�x�7\-����dFraF������z���]�jo9��aK�� �g^��[��vg���f������[A�0��?���ITi�C��z��z�i#�lXFj�O����[������@IDAT ����4F�"������G��T�
��Y�d�YU�<��(����~��o��2��d���'����p������}4�gh ���r?�dx1
����`���i����a@}����=�
����pJ��-���0pl������L�
����2�u�_+W�W�}Y3`�rx�h��Q�0�8��&\�`�P���Z����M�2e���3�E�
�"P����.��S,u����=��
���G_NN�Y+���R��*}�7�A�-E�j@�iG��TXg�SmK�g�T�W�����y�����m�K�l�M;�AA������ux�C�w�b^�����uY��PP���k�H� ���pp���=z��0i����})��j�������P�t��w*P�
�@���$o��78���p���yWo�c0==a�D
�0Y�������L�������D�g��a������.S��}�w*P������L�7�e@��Ah�W�/�������W�l��z/o���TjX`���|G\;M([}��f�.�P2�u!���������03�f�`o�����I�����'~���xI����!k<���:8�
��3s���Ok0�S�>]�7�\!I���6c�z��'��(���r�iBX�`����'�"!�!��^5���X���|��u
�{x�%�������O��]a���Pl^^c|��3�7�1\Wa���������r�z�R~C����&�w��%���U��R�e��2�
��r��
�q��3J��9��g��*�pt��U��~;�e�<�:����9^	��r��u��K��6�g�������ph�3%�5��@�O3�7I����(h��k=SY�� �/�������d���ynGhV�c�������'1�;�C���YMD�|;�c��:��kZ��}�?�����>X+
����~��`�V��m�����|lm1/�(��q����%5� @%<&�E��@ss�I0�~ ����3a>��P����Ox{o?kr��,���n�Po@�E�v�Z3������-f+T�B_�T���GV�%�4�uKK��
b��	�v��8��1�n��?x�=x1��������!j��j�����_�Q;$&4/��X���y�W���D�<7y5O��������Mxv������92��u�3�����B}����K!
�����d�3OdB_��<*(D{�A�5��d_��{�it�.inn&P�.S�[c���FA�Q�UR�B���]w�%���o(S�'����0�B8���;<}�M��&�z``�z(a}R�NO�O�k(m�!PG�jS����nH�����[����v���yXBg5Ul7�.�C����=���i�"�X0��f��Z,� zV�E��T��8�1���?�\��|�	hS�p��(g�&�uP	�k=�>3P�T�(��
I_1��Os]����V��m!d��6;�_M��@\o��J�:����	���]x"�'�q�������/��j�6���.���=M�]�<0f����gi��n�m���Y`�BSSs��S��Z.WMZ���\S�a4���?eS�E\w���L�l�H�(S�e�8L�u�:p=�*����!�����]��:9p?�U6�6@�cS������}s�e�c/=��>�;��-�nz����=����mh�p���kD�`+&6���:Xp5q�u�~������I_�t	q	
3�yq
FI�S#9�K#�!	��fm�3%s��v6w;������ymo&[��pM��uK���1������</'���YR_����^�S��� )c�.SA5��Y�d`�:���D����9[{�j�O$+u�J�}�BX�e�:DX���G��� s�����b�d�K�;������>��I��6���:e����{nS)'�]/��|���x�G�V��F�x��7G=�9����@���YL��6&�����\@1���������zsC���b/���E������xD���,E(u��/r�G; ����|���S7Q���>���{�&�3`���Q�<�����5M�m��u��F���E\�z�!�(�,���1�H���������@x
��k+���kt0-}�Q�M���
1�@k��Rf?N�5��Ux�?�a80 g�u�^���j����o������bp	�r��e���\�c��Wd��|������6����_��~>/����Hx���qc��e�?��b�}8�f�������U3F������,�>1�*��~�z��>��f�Wat��XF�F����[��3%lo�]��	�eW�V/U�+���^�f~���L@���o�6����T�(��O�>g��X��8���4�B�N��=cliQ�t�S=���>��������+���{iP�Q��`(�,;
�-����XL��=�!�A##�Y����G���i��o(�'�C�cV��a�@1�X1ee�������
!�{��1�����UOH��I���t�A��?�C0P`��m������ � �H�B"Pt��k��U�@1^=i�
XW`�E�g��[�a�Z�J�A�L�>=C��KPO#
Y��j
���1�=J�j��P�����`��m���;Gx�����T�c�r�z��)}@2��TH���yaq���*����' ���<�5e����L��S�b0���z��~`@�@=]Fyxx�VzPob#`�z���}��T7
�@��r�.cP8�^�N���.���@qH�K�.���*%��^{5����@��wz��[���{�7Nl�9j�6G7X���t�@�����(J�l�m�3�ME�����F��^E����x P�WOZ�� P�.��
GH�d��u��U�b���H�C!�xo���d������H�I�M@N�N�\���`!y�	tm��%�D~l�L*�:��1X�����a�~�R��` B�"T�7g��������_��A�0P@a3y�y9K�?����C����@�����5G��(�/���N��Z��~���
��U&D����'�m���6�bvmln!P��nf�lc2�bk-��-es�%P������6T�M�
(�T�uQ� P�A��&C
SvW@1��
d�]R�"����j4���:UC�BM�a>x�u�����:���
�C�������)����������{j��������k���fZ�v���w�z�'HcC�����P0^����^�5���N���z��_����A�hC��6	�kw��
fo<E(��~p�:y����
�����w���:o����~*���@q�&.�(�Pyxlc��a���m�3�'P������6��m
(�P�uP� P�Q���
s��
�����`����\��\Cy����n�����^�mY���{~$2�"M
K���>��t����f�2����������
��4��Vo�S�@1�Nq�"P�[�`���g.�8�nk�E��t�]mr��N�
�1�R��Q'���	$�;9C�Dq��@���iU��I��WE�g1O��E��	-�K�N Pt"3+��x��g���Qp���5m�4�I���#���u�Y#�pEa
 �e����T^������xl�����+����G��()��|�k���������=�P1lc���L�m� ZE��� bHlcB
S���� ��#�����*��o2�_���OfM�I�<fp��mA�����T���\��5|6*@��E{{�G���F!�+ ;����P�o[x�G��"l[
/b�bk[�L������r�#P�g��]�
�M����>�~�v�i���~7Tf�T�
P*@��T�
�Q���\�/�������u����}�e�
����c^*@��T�
P�
�a�/�����k$P,���}�
������>:�
_z�%��/)���_}�t�MSWq9���W�M��'�`�&�(�L&���R__��������!86�`ihh��"MdS^h��vsss�l\���k������l���(�l�2����&��v=K6��Q�jkii1&L��2M�R� ��D���re-�m��er����|�8���~9��j�cN���l������i�����
L��=����
ijj�_!k0
`:D*B�����Q�m�]�Y���P>�gS��z��g���g����W^y�T4{��Q�y��`���������y8���S�9�k������d�Zn w��63s(�+��a��a��//�P�O�0�8�b����A�����Nu�2�]/i+�eE�$}�����=2�Q���F��F�4��&����g��'�Pt��_�P��p��6�����s(�����s(�J��D}�������������v�D
W�@�p
i�
8U�@����2E���F����@������N��@1U
w�����k"P��p�9������]OvIGfl�cn�=�NfN��.<��K�����X_I�h]���!���V��j�@1�4�6(Z���)@��HhVC�R�@1.%��!P�U�9	�T3�-��Z��@�P��'P��[��U0|y����Qb����H��w&�-���3�������T�!gN��)�������i�@1�<V6���"kV��Y����@����(f��+KH�:Y�U*�_��5G����;��;�	�i�Z�b���	�i��D��+��s��e+{������m}F�����zH���e���hW{���7�u�l��]O�hW�L���dR��:E{���L��K;���J�� Pt�5k��(@�����(��+����I��b(�
�L�X�|�(F�������0�b$�
.4��b[G�|��k���=��H�|��:9`����K9�_����b$�
.D�X���
��	-YA�/ra���E.H�Y:,��Dp7�@P�*_>���c�@1�Z��%P�O�|��)dg;��]�Y%P��P��	��4�����y�Z+���#=��BG�^#��T#S���H9�#KWPA����\�@1�t����,]����d+��b��6@�Z2(2���pw�@>�)�v��5
b�@1�J��!P�_�l	�)cw=��]}�Y'P���������ey<�nm��K�����Gq��J9z�Z�5�2�To�`�F2@�I��(,ahlcBKVP����\�@1�t�(F���D�"9�
*T��J���@1>-�X"P�V|y	��2�%�|
��N�hG�|V	�)�v��5
bq<�[O���:dM��t�
+���je�YUA$�������+� �bA�E.L�Y����D�.RA�H�\�@�`	C P-��EvB�;T ����;�b���H�D���(��i6�������@�����(fS��zE{���<��sot�o�k�wV{@qrSB>�o���M��Y�F�����D{��i��2�b.u�lccG�lV	�)cw=��]}3Y'P��
�����t���T@ Pt(��5(�����t'Pt�ujM��j�[&Pt��_��������%��;�����x�(&"'�W'G�\#���"��^�~m��n?	���������@���~m���>	�i���(@�hGWZ�� P�&mV��Y����@���Y�(f�&�
��K� �b �b�D���y
(���J��!����V�^�#=S��w���t����Vt�Q�[�6�a���X�H�hM�����d���E+��5J��W��3(�.)
:V�@�����
��b�
�/O�^�8J(��bx��5�Z�@1�r��#P,L���	�*��bt�
)9^�����=K��5�o��mN�3�N6�^Q��9�r�?�<�6(Z�6�a���X��6���Y�(f���E��f4N��Q�,!K�dqW� Pt(��5(�����t'Pt�ujM��j�[&Pt��_�������
<�����Uk�y���B���Fv�]m�p����9
(����FEk�f5�6&�4V6(Z�5�Q�����@1vIi����guT�PU0|y����Q�@1�� P�Y��Q�+��ba�E-M�U����kWH��
�.���-h�7��������W�x�������,�s�cm#��5is&P�)���lc����(�bVi�n P�*oF��e��R�@��Nw�
@E����{�Q#����N��NwEwZ��D�����eEwZ�5(�J���@quk����u��Mo�
�:��=kd��z)O�9���k>������@���������N����4�E� *���@1^=i����5g�T� �/Ra�H�\�@�`	# P�$[�B��d+��b�F2@�I��
($_���(����O�\'O��-=S��w�������
v�"�#_�$P,H���	#K� ����E*H�I��(,ah��%c�"S�@��Nw�
�S�@1�B�o'P�_� 	����5�f�@1�2v�(��7�u�l��[O�hO�\��+P�&��M-��u��F��������2{��\�E������T�@� �"&P�,]��lc"K� �b$�
.D�X���
(����L�";!�*�O�|
���@1~M�X$P�R�y��4�E�l��]O�hW�l�	�)co=��=msY�@����r�C��jo��g��1�je�-�sIy�#KWPA����\�@1�t����,]����d+��b��6@�Z2(2���pw�@>�)�v��5
b�@1�J��!P�_�l	�)cw=��]}�Y'P���������ey<�'_��K�h�W��b��7!!G�Z#��T�K���8�Y��
($_������\�mLd�"$P�$[���0�����@�)@�Xd'��C�)@��O���(��i��AT�?�b��f�H��M��	����:�b6e��'P��m.��(���W~C�<�j�����L��Z>�w��[�F�����D{��i��2�b.u�lccG�lV	�)cw=��]}3Y'P��
�����t���T@ Pt(��5(�����t'Pt�ujM��j�[&Pt��_��������{��7�������^�IQ���J>��4��O9�����kk@���_�;�dBC��E�I������q�9��[���}%�}(���5�Q�@����J�)@�hM���	�Jcu��Uy�'P�*M�c�4�A�@2���@1vI�$P�+���(B���&w=�%���yw��RN��V6�^����]�@�P\��+K�w��[UKueY 
F#��{������@���~m���>	�i���(@�hGWZ�� P�&mV��Y����@���Y�(f�&�
��K� �b �b�D���y
(���J��,N�
w���<����r��Z�u�����`��28��b��Kou���$54o���^H���D��^u�1n5'Pt��_�����OEwZ�&;
(���V��5�I��0�bVi�n P�*oV��Y��}�b��2H�H��3(�.i^��y%��a���_���&��7����MH��;�������7�c�4���{����W���7���;T�	{��`42(�W�m�[�	����F��+���@�������vt�U*`MEk�f5L��U�����8�bVib�@����(�)�L��K�� �b^��d�@q��^���6y|Y�����L��Z>y@�$��
'��~+�p^�c	(b��;�t�%w���
*��m*����y/��3���]��	s�cm#��5i�&P�*
7���%r���T�W�@�W��'��;�Sk"PLU��2��;�	�i�Z�b���	�i��D��+��s����?��N�Y�%'����������:����?�c2���1�U�'���:��>!_;�A���|�!%���@1�,VW���*���#$q��@����*!P&����%x����[E���@�����@qtt'Pt�;��;�Sk"PLU��2��;���}%�~�w���uw����SZ�Q���
�����xA
��^�~mc	(���G�zK�<��G�M{��������P����@1�t����,]����d+��b��6@�Z2(2���pw�@>�)�v��5
b�@1�J��!P�_�l	�)cw=��]}�Y'P���������e�@Q����r�����>#����e�������������%���X�/��-?��U���	�T���7�O���b��"XLFc2��1!��!+�b"F0A�A��(( �����~
�T �����#7�b*��A�^�8J(��b0��t�;�b���G�L�8s(��fp[�"O��)W��a��������S��[mp!��`�,d+@���_��%?S�����29k~�l�i�T��;��_G�O���E/�6&�vQJ(FQ��2��k��bX���� P,�3���y P�#����D
`�@1�H�(Z5�I�,�X^M�hY�,�	�cq5��Eqs�&PY�~�\zw�<�l�Q
�$���J>wXC��o�`x��(1V��j�J���N�L�U?��4������u�O��bJ������(�����@�W��'��;�Y���J�T������j�@1�4V7(Z�7�q������@1vI$P$S��c�4�A��Y�@�(���/���M<�9����W��G7�y�W�����X|��7t��+�O�=K��)Q_S&��l�LlHh�������N��/lc��<XI����>��.+��aP��D+��b����+@�8���;@�)@�N�8r(��bx��5���b*�A�L��s(��h0{��t�3�b�j�E�(��/r�}�f���~���F��C�e���������y��y������om��W��P����y[U��"����d}����T���K;d��URW�(��V�	��b@�b�F���45*
(�����
DW�@1�vQK(FU��r����4�bT���#P�Y%�P1�
���Z�@�P��'P�t����\�`�������p�r9q�Z�}��h�f(����8X5�b�r��/u�o�i��Nz�J����&�is��@-�D���D��q�y���.h�ys�e��E��A��E�U����k�����bq����b`�b�H����(��+����I���b^��d P�"k^��y%�=�b��2H������]r�}����<���r���r���@:���� *��g,���>Y��S.�eh��T�j��;'7�&
�����@1��Yf�Fg��R����E��Y!n_#�����c�O�����@�p
iat P]�Y;��bh�
.@�X���(F���B�K��b`�b�H�����(�*����I���'�����&�����t�oj�9U��#B��+3�s�co�X�o���I�M��������}�������R$PL?C������qj
���G�����j�xj��vH�L�P�z%�L����(���5���b�z�����u�GT@�8B'+��<���X[A�hM���	s�cm#��5i�&P�*��
�����\���u�9��5w�
��qMRS����^�Y������n��=IY����M(3�S�������ff�|����Y/Ik��X�6��b�}J�]�'g�m�TU��7Ol�M�UH�,�{ZFQ�$Pt rZ�i��k�)@�Xr��;<� Pt(��5(�����t'Pt�ujM��j�[&Pt��_�����OEOo�Qw��I������Q7sz�|���pJE,'�������X��.����.+����l�+�7���OuQ�j����
2g�J��}`@��R-����%e���bOo�<�a�qe�tv��Y�>�0�*��dB�cf��h�@1�P�V�
(����Q��
(f���ZE��f�M��]�[m�;�6��p=\}#Pt���z�������G�A�8����;��{���U�YRBN��Nv��z(SK�/@���:PX��C.�5i���1%!�j��?��&o���W�?~�9x�Z��0�aO	qF�&�1n�.v����/7=�!�Y��n]>f�9t���X�aO	�^���@����1^������u�K<���8YA��D��(����
Ek��4L��Sk	�I��0�bVi�n P�w��.���Y��VP���jd��C�
X�`�P������>��1������P�,`��+����r
�z���zl�r�
9��z�t�
����\�����(\�b�����[Z�>��W�;�nV�`���b���([���0�����@�)@�Xd'�Xw��w����z�� �u�]e�����h�y�y�����0UUU2i�$�d�Md���RQ12�M2���+W��+�}t�jj�-�������	$�I
�`��o�)o������jh�~�����S��Fm$���i%��H|��7���n����6m���1C��i���_�|��f�r������d�L�>]jk�y0N�v�W��X_A�h]��(f���JE�V@�8(��E�rVF�8(��EgR��@qH�7V���$MI���9�v��B�����L,q���
(Z�@��w�����h��j�d��������������X��u��3��7a
�<��@���lc�j^�@1��'�]�"/��5��'6&��cd�
K{EE��9j#Pt�9k�W�x������������������r��W��G=�X�P�Ahl���[M>�@��s��G!Gy���9S���B� ����M�����;�:��|���m���`����e���r�����>h�boo��������Ad�b���Z�J,X`�����zK�4,�
7�Pv�}wSn���6����D]�]w�,Y���H��Y�d�}�1�v�i'S��X&P��jn�������@�����(��'���q���bp���I����l(�)�\�C��&������Kk����T�yk��������v�T�@��W����&���z�lS�r��9HC��u����h���{���F���F�M����.�r�.�1n5/f��u�~9��k������z�����{�[��j#P�����+�Y�-m);�����K���\}�Q�u�������O�S����e�����;����@���9�����_���V�C�E�	��~����e���AV@<�;��s����6��~�+��B~���s�=g��� ���oJ|��7�!_���/��B9���
�2e��L��B=����<��s���.t�����/L9�@���z�2:����������r��@i��(�T7�m����^K�h[���	3�bc-��
U��$P�����6T�m�@1�>��()��Rr���\r��\uLN�7?���`���.�J(��\��C�uwR�o��J�hj�|��z�2����_����;���Su��r����2G��0F0Z�@���lc�j^�@���_�X�+_���a��[��S�Lm���T�/�!�!;�b"���*@�8���h��������^jB}b���"n����?PC��O��r��'���-����V.��#8����4��?���������g�)��"�s�������M�z����V[me����z����p��v3��	�	o�?���r�-��(�����}H�.]*�^�
�@�;��S�����< �P�DTlCWx�?�|9���d�v0��UWH��/��>�9�����6��Mu3�&P��������l�@1�.6�(�P5�M����A�hC��6	s�ck+��pe��S.[��:�o0�I�����#|�`�b(R�@�[��
�$�_w%M�B��y�qB�4�$4�i�,�W���e�)������^skL�$�d�@1�lbS�|�3P����.��_^�:����U!'�W'�M�����(�?[��5g��*@���c�<������N2�yh�����O?m<�n��&�����?x����� !Lz�!��h����%�����1���<������6p��O4^��f�D:��������r�=����2�#	0���_��?��F�	��������o~#����9^��3�8C��c+��O( 
F�>���;��o��I�hE��F	s�cm#��5is&P�)O�	c�3�1��R���@1V9#P$S���K��k�r�}IY��7_]c]��k���,�%L�����R�����ku^��u�*+�d�-+������y�Ek��'��sb��>X-��v�)�dQ��I��`c]�a3Pl���N���:��ssCB�xd�l?�rT=���T�/�!�!;�b"���*@�8��o���({���<������f�g�}vP���;�g `���:��������v��������,����-{����rh`�����Yg�%�w������������(g�y�l������X��HxF�k!U����o ���|F>�����o<����?/���/����7!S����������4i��r��w�	����� ���6��Mu3�&P��������l�@1�.6�(�P5�M����A�hC��6	s�ck+��pe�X�#�?�!w<��3������7���#�C�R����-W����^�wB�V�	{�S�j��W+o��^��`r�|���X<k�U��b�b��6&&!�)f����'��*�.����C�����\��((��M7��ntf-� P��mI[� '�����}�~���o���s��0�C���.�o}�[���F��b�����O/E�:��� ������W�2�����u��05���x�b"u��7���������hD����y�u�����}�m����z�����:����cj9�D�����1u�Q���S40/�#�<"�\s��ZLi�|�rS��n�/|�8j3(�T7�m����^K�h[���	3�bc-��
U��$P�����6T�m�@1�>��(W�%�'�<�^=����dZ����	�3F������P����}�v�U

������:1!�p���TSf��^���-�z�����O��V��F������B��J��z��i�b�������r�Z�����S9l�j9b�Z�>�4�Q$PL9��		�j�)@�hM��5x�y9��
�?���i�~�,\�pP���L�]v�E������G��o�m��[o�e�S�#�-��E���<���"��9s�(b���s�
<������@�t�����R"�U�����8l����#@K@J����m��V�}�����MM����~�x?b~E�R��@����m(f���ZE�
g�O��Yk	m���&�b~�l� P��jn�������@q����n���������!MnJ���j�I��������R��=��+�MJ[�w-n���d���Lq����u�����nw�S)G�^+��>�JwEWJ��6fHK�
1#�%�ok�c�k9U�m4���{���
G�mH��(��QT+��ba����+@�8������N���O������s�=W�[o=3E� ��W�bB���������o���1�}��aE���
9��#!E�0aUU�0-�/(�0�t���z'�|�	�
OG� ����	s6"/B�N�6M0�"� �{�\��Z^>��!@�+�����y����4@q�M61����L$�?��F8�0���r���/I����	c�4�A��Y�@�hE��F	�J[���e�@1�\�e&P�M���KkF��r�<��S.��]�z����<�gS/�n:��qx���8��[[[K(b��&��!x�u��&r�	MR]�_����I��=����n�4'�������j�;�����D�c�mL�b�\�@���_����o��%�O�yO=�Nv���{ZF�V(:9�
�4A��� P,�Sfw��(���~��8�-���@�}��7���o~�3���>�!!���1���d�����!E!��w�g��^@pp��)&��c�=&�i���7� +�b�R�!T*��|��9"�[q��e�9��o���	���w�aA}tL�����K2s��������O}J.������������@��9��>�����&/N�[�h
��TDJ��,�T��������g�h
`��!���{4
�������>������W�C{�X��rQxk,T���V�}��>_P�N���6&�n����/lc��\�^���t����7�Z]�/m�.�o��a	�8�����G<�E0�"��/��G��B�|�V�z���*�d��9n���G�j��%4��-�:*�r}�x���2ov��Wy!S3���������%�����I���bm[�z�����r�C
����h��gvHU����1c��d�����v������L*��:{�l>��J�F��>}��<�	�:��g?+/����t�I�` "P��o+g�u�	#
�iP���K��EKx(�}��(b�Ax(�\��E9x��
x������7P�5(�����n�����e��F(�Q��L���N8�;?�����>��(����d��6�y��@!X����
�������_�:L��y����]���T�
P*@���(�^[�<�j�<�z�1���3���s�/�,�R�P
,{�Fxy���������[v��Ev���0C�U�����,/�]�aO�(E�Ni�y�Zd�I�Jp�cQ����<�j�<���������F-���ker���
�}�'������r��z����[�5������b������=�#����^3`�����?�O������[6��|�����	�vhzjii1s����f�C�a��o~�x�����?�����+��I���f�m�����/=�*` � i���7��^{�|��#�'�%`' �^{�e<Q��Y�d����n���#f2�4@�[�&anF�������9�����V[m�����L�l�g�zS�7�K�Q !!���>������Kx����s�����������1x�����o��/��>��=����������OoG�����B_����Q��}�a�����>^�i�,���/�����/+��9����c�G�	�^$�\�H3f���jX{�L�����L������u��}r��e��:n8E����n{!M3��c�T�5���k�k���W�Qd��	}6�T��:��=��5���������a�s������=
�q��}��+C�&5�'d]�O��x����+G�$2g����W+��WD����D����|�7���6�h��+~>�������r�]e�\�/?�X�D����m�I�cO��wN#<���w�1�
~�	s��ChS��c�9F��g������s���s��E]$l�Aj1��������nN/���!�>x&q����X�N�:� �+��b���K����3
�:����o�������yX9t@n��v�K1" ��E�LHR�\M�����K
=��C�|�X���{�9����d�]w1��9'��������~���?�?q��q+���V�Ze�"�E&7
pE7:���9����s(��6�e���K{�8��=m�Y���[xi!�������P�!��z��.��u��3���������M:�54@;�d�5�C�$�x��Dr���R�C���-l����<8���pD�L���|��W~sm�<�z��w1�����e��2�){���N��9S�p��6���~-�:����{��W���������J�[Z�^{2�1!'�W+�lS��e_����C1�r�����t�Rc�Y��\�����������2���I��%�������<pxbn��	s�!\���_/#���@IDAT����k���� B����oB��oD�9���������~���!0� �;��7o�	%�9�?�|�x��'�"<S:������<�����H�
J��O|�#VK���������C�zn���A����������/����/})uwb_&P�]��	�Jd%��Y�%P�+Qlc�2�!�Pr���@16)"P,U�	3����]���d�Z���I�;��� [oT��@��� ��,������w������"�w��R�8�Q�<��j��������������[mT!G����f{s1Z�8�I���X]�6���#�#PDx����i�.i��N�
���}\�����7W���
0����j���k����"���K��������#[�&�,�!P�~��n�c���>�e����~�����y("d'<�,Yb �g>��6��_o��}�k����[o5�`�FLM�4�DQ���<�CXR�G(�o|�&�jj��^z�x"�)���
�������{����2��]�vx�${��������o}k�&<'q��OMx?�L�6��l�@1�.��(�V8�}����XK�hC��6	�kd#��
Us�$P��������]��[.��]���c2���������;
��"s��k9��Y�kK(��f�����<�EH��oW%�o�t-��=�b�\vwR^{��Nj�+��w���v�����02�N��	U0|y�1�5+�D1���~Y��[��lh��:����f���6ybY�tjI�}���c�]�pJE!28/K��\r4<{�-�g^��_��-^�����s?Vj$P+g��q`NBx^}��r��G��r�J�<����oe���6�s�!�(��hhC8��N:I�L�"�
�{Gy��6�={�	U��>���:��C(U�F�S�?����s(�bN#���o�-,0v������%{��������C�JxV�NxLb>x'��;q��i��?�Qv�i'G��G1a^'O�l@&t��b�L/���9�+��R�����<����!C
Cv�D�`�@1�h1!P�A��&
s6��
h�@1�P1f#P�Q��3��RC�]�P�����d��,�=5d���>�0�3km{m)�EOw�u$�����3�$���j*���[���7������S��m])'�[�3\��3����i����J����"�I�W��������'4����|���z��0l�q����;l��{yp�".(F��b������'�=�)����	8���(��8��~6��N�
7� _���
�T<���4���������7�M���aO1�"Un)�|�r���k�����`�M1I,&j��!�QD^����.������`�E����1i9�SO=����}�v�m�g!`�-��b��9��MX���Q�F�s�=&,+���rK3$��w�i�F��3�8����a��x�(��cX+�a�'?�b<:�B�D���(��i��AT�7�b�z�F��Y���>�{I���vo��f���?9�(�������Z�^[�@�������:e��A�9:��~u2g�`!w�sO���x� 8�9��x(���;p@�h��i�m�HMl�)F������Cn�b����*9��zyEC�^xk��=���I:���{��!;���<����u�9Z@���z=?�4�C-���s>�j"Pkg���d��������{���W*++�W�l g�y�	
O??����/4�p��U��c���Je��f�C����:���{����p��E�z�j$����Z&L� ���N���	������������+���I�L�T�A�����E����A&�M����	X9g���bV�	����(�bNy�m$P�&mN��9��u#�b�r6F�X�X3(�*g c��d�=�bfI�5l��/w���l�:�<�:�_� 5���g�����a�'����~������N�����.[U�g���
:�b��9@1_�o�����Ur�>�9�``:p��R���mLlR2T�@���zt��vy�/\2�
��!
{�p���=���Z�!B9R=����Nj�����d!��Q��-�������]����(�9Q��U���pC���v�	C��_��x�oH���;L�Q�c����{�l�s��"D����k��m��&w�u�	o�N����s�����v��x����7�
���b�
��9��L��f��"�;�o��Fs,�����
p9o�<������g,w�}��G�n�
r�M7�8���.�����A�8\W�])=���z��F�hS���	�kcs��Mu3�&P�������~^�~zE���\�sr�l6�B��_9��]k�[J
(���W.P/��/z@�J6�O<����^Dm&�������]�aO���R>}P�l8��|i�6������d����b�/��-���M�xw�m=�3�m��fW	Bw���y������Q�7�R���V6^/���--��%P�V<yG(b����u���o���z�|�����x�V�����t�`�����"��{�Q#����N��NwEwZ��D�����eEwZ�5(�J��$P����w{t�6yf��f|UE�|��Z�;5R��a��*O�R����%�/l����������E�5�����]�pRnz�C�]���n09!G�Z#n��
S3ZZ&P�$l�lcr�caS�EDO{F=���|�ttz����4��S�a����hV�����7��cv��]�p��SA�X�����P�|�w=�����f�brSB�t�����^�q	P�RS�@��#Pt�9j$P�	��N��N���S�p�L��Nk�&E_	�����~gm�\}Rn[�i2�k��}���S�7��Kf�������^[j@��G������g�(�c����!��a{���<��������������6�y"P�X�����a�;�������U�����?�1A�k���I
�|��D}e����D�G/�KM�P��9\ Pt(�@U�__�#�>�����2{���v��B�>������ P,�S�o
(�?���5G����;��;�	�i�Z�b���	�i��D��+���@1��x;~��N���v�	o��Z�\�;�Ij�t������!�){��nm�EK��m ��N[T�G���M��U���.��Mn}�s0����t�!u2k�����1]�!���	!VY�
(�i�GW�\��)�=�E�k���U�x�y��Z�����Z����*��hE�|�]���
~#��	{��;����,1 P�g��4� Ptz	�k�	GGwEw�(��:�&�T5�-(�����@�W��'�bv��{�����������P���	�T�y{n����"Y�RJ@F?�j�,^�yB�u��S:�_��a��K;��:��w�Y��;t�j�x�k*t~���\�mL��2Pl@q��=r�C�����@��v�p�����*��������;��03�K���13�b�b4�(����H�_��]�r����|��F��3��5�����c��������)��{�Q#����N��NwEwZ��D�����eEwZ�5(�J��$P��7��z��^��K[��}h>��}�If�_!�����kmsK)��������./�����P[&Gh(����y�J2����^q_����(���v�Y����MReyL�@1���!;��Da����Kou���
s�`>�O��S�������5���:��Vy��r9J�*�9�4�Q$Pq����5P\��+7?�!W��a���M����?��$dwL��L)@�XD'��B�(@�D�x�(��gPk�A��7�b�z��F��K{��i��2�b.u�l#P��k>���zku����Vy�5� �����~��M&q�?�Z��-%�x�3�r�=���*o��
�K��������B������r���G$�<��z��&U�����bQ,�bcY�4���.�����&+���������e[��W����k����������Zs}B��JN��>���+�����(.[�-W����g��aj��d��Ur�����^+�X�
(�y�^Q��
(f���Ek��4L��Sk	�I;�0��I�� Pt"��JGHb}��u�3V@��Q�����[�W��4���+���}��Q���I��V|yK	(�{a���D��i���	��w�����y�N�����r�}��y���d�V��������ZbT�x�P4��e�����_�K/��\�LnLH"�����O��aO}X��[��s����6�~Q&%�Y!P�W�]��^����N��%i�^���V���&����q���8<�<��V�@���#Pt�9j$P�	��N��N���S�p�L��Nk�&E_	�����n���EOw���O�oX!_�� ��U�>9�H��3�
P�����n��/����vUr��u2uB�k-UDx��K���;�j���gT��'4J}M8(�j7�2�b>����6&~MsY,&������9w�w�?������
)�B&��u��������y.o3�B>q@������\:���@1nE��s	{�����:��69�������=k���cu���9JT�=q�������sO��^s�H�8:�(���@����5(���n�@���~M��n?	s����/�����.n�X_S&?9�Y�6�� ������+���1g���j���V(C<j��P�6�YX�����������&=x0�9!�i���f��3�@1��*<?���5c�����u�r����^o�9�[m\!������n{<)7<�1^y��	9j�Z�W�y{"Pt�\�U-�r��I���%\�[nT)�<���{�{�Xc1)@�XLg��B(@�@���(�,h@s���9�b���0G��C��-���4�bq,m"P�$l�����8ro���s.\+�'J���F�bFe��-������R�Ku^��i�7����N�o�����w�-x���^�2�{�Y�����������`Kv!P�&mV�lc�JceC1�����kl�EOys�a��}����h�L������{���/S]BC!W��,�B��/a�(�U���.���zm^uR_�]�
�e���������.\%Z(f���p��@3�by��e���'P�"�����N1O��"��EE�b�TE��"��EEGB�UC��&H������
�A�,�R'{oS*d$�3��`U���M��t�{-PDh��{���E����0�!9<k7Z�\������{��2��J���mL|Z�TL@��E�����K��?a�Z9b�������O.��M>�e�#,�N[T�G6Hm��P�w&�J������%P�{)<m���=�^8mbB>��V���=��$��"W�@��Ow�
�+@��������5�T�b&U��#P���_�����OE�z��(�J��$Pt�ujM��jd^^����nxE��w������I!�Q�`f}m�-����[��g�=a�m])G���f���9���K�y{��i�i��q�a���;���������������b��.���nk����~�M�	�������U%��l������������N;�>�6'c�1�$P�I�f\E�����v}��sp��Y����;�A6�T��0�!3�S�@q��P��W�@��9&Pt�9j$P�	��N��N���S�p�L��Nk�&E_	���������:7��w�f�z�
��
2}�N�0q�?�P1g+���:���yN�O���������]keB}�k,�t/����j���a��*�d�-*����L�0������F��+���m�;�QS��>
��hI��mARp�B����|�I�k��~�^����5:�ON�1{���E>�"��9�N���o��U��.w?�y�V�}����>�(Xf�Q P���Q�QR�@�����5G����;��;�	�i�Z�b���	�i��D��+���@1������9����u0ssC����d�
>rpC������R�D����<�"�v�~�r��5R��g!�x�C.[�����<�?�T��=MH"f�H�h���b�mLa,�.���������N�2����[��O_2x������L���JN9(������^O��ZqW@��W��j�?��;A�M������'�?�c�F��u>y4�@E�'�@�����@qtt'Pt�;��;�Sk"PLU��2��;���}%�~(���_������9�z���Nj��U~k����������C/t����O�@=�0g����G����q���Mm���K���ke�mk��<p��CE_	w�lc�i���(���O�{()7>�a����Y!��ygS�_�@���:�K��������(5U����!�z�(�V�P����^���j�����&����d�-���K����z����VE���@�����@qtt'Pt�;��;�Sk"PLU��2��;���}%�~(���u� ['���G��N9�N�9���6�H�y����p���e����G;�5��+�NC����N�V`gz���B���������K��V�W�m�Ze1z)(�y���bL��rP�����&������L��`�|���^]}��\�`�x)&;��g�i�r���2sZ�mO\���b�j��(b��/l�z/�2��M+����/���k�)@�8��8��� Pt
	�k�	GGwEw�(��:�&�T5�-(�����@�W��'�b0�[�������=K�[�:d�j9j�Z���}��T��OU��r�E����-���=���
��c�|h��`RE�B�v��}�t��
	�E$x)���FSWyL�Ua�@*�Mlc��],@���������y��	a"O��F��6� �=�)W������z�2C����e����@���9���+���K�n���^x��i��+��#/�0Q�B P,D=������{�	�k�	GGwEw�(��:�&�T5�-(�����@�W��'�b0���}�`q�\rgr�B��rP�l��(I��R�y�(v�'�W.X++��5a�����UP#u����W���[~qU��Z;@Q�ur���Rc}�8�n��zP|t��L��}0L$���l�l������{�y���q��U��C��Vuz(������������"ALiN���r������!��1���;�<������sL��^s�H�8:�(���@����5(���n�@���~M��n?	����[���%��w�`��M	*r�
*���`��tN�(��v�|��u���|u:�����e�������^�J��w��-6����i����W�S�Ay�-��q&����"��]�t������0�3�$�;'5����/$�i��k5���z�/�Iy��
�����<�yU�:;�P�K��vlEx�_�`����N�k����g���{������?z�
(����cW
(�?���5G����;��;�	�i�Z�b���	�i��D��+���@1���z_����]=�E����� �Y%^9�L��s;P���������g�_.'�_'�mZ����>�R����!8�
?�T���^�Z�c�AT�7��x��g��b��On����m�A��'�E�&x-/X��K�HJG��L��/��o��S�y��B�(:{�*�@�W��t�:Y�a��p�;mQ)�R/S����w�
k,%K�lq_��*@���2 Pt�9j$P�	��N��N���S�p�L��Nk�&E_	�����P���9�����
B�Oj��}������� ��u���(���VY�T������V�1�m�4;���hzC�����u��������Y#G�\+��� ��@1�J��a����P|gm���H�����aXSU&1_>�10P|TCM�gQR^}�5f�|��N�hC��6m��W��E
��|��[]Y&�mW%�\/	Pr&*P��
��T����!Pt�9j$P�	��N��N���S�p�L��Nk�&E_	������g��oX'=�-������]ke���o�s�?��q�,v�x�Ek�������|{�?qrc�k*�Nk�z�
sx��CaO7�VnB�n0)�I���D/�6&�vQJP|��n�������b���� �����>����1���Ow�2������3>������.����
�{��?q������;��a;��?X�8& P���5� Ptv	�k�	GGwEw�(��:�&�T5�-(�����@�W��'�bp�1����$��E���H����������W�5����Y�P�@��m��?Z#����	�_<�^�����
{^����[�w�:����P�"g����wH��@�P������|����Zm_�^�q���a����RnH��)7$��^�nn*���c�`�6����
�{W��-�����V��m3gW�~?����sf�3�]�3����:�L������J�����C�Ci����81}X�"�D<`��f?�����u�G��u���	#3��P4�j�m�-_XU�w?��\�B���&�0�����-?m�(������5
E��K������B1;�)�q�PT�:�'
�x��)���{�P�I��S(&�;����A����Xz����Wz0,��^���<k#��U�&��C!������������D�r���M��Se�h��}G�����1���3���P4�,N�-^c��d�Z� W�+�8qV�����/�*����r�9�k���~<��_@:�����Fp������g��B�l���o�P��{�w�d�2��;D-�6&F���|�9�Pl���ck�(�+��z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN��<���0�"���DD��,��Mx���-��~v��xTo�'���5sU(�(��"��������l�&�};����
q�J�J�������s
��g*4)�<��k����8�V����.~{��-��J��%�~}a�"f��t|v���(z�y��b.�|��Q\�C�������)���o{��-�����l�p�
��	W�l���Pl�#��j�(�-��z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN��<o���!���Y>�����7�w��ei�1��o�i��P�W��Q�SFeD����)0q������2T�9����]���x�������PLD���y�1�ic-f[(V��^_���*��2
���p�{\��Ek1��C��hi��
�����^E
���g�k3���~���GN�D���Z�^�	���N�B��� ����PT?�����)���BQw
Eu��{�P���n�BQk�'
E���9�b���j)6}��0����\5��.m��6�����1��\�RN���<Q�S%��r��r7�v�0��������><:����kz-�����7��nm?��N�������c<��Z��P<z6��k}X�5�M��*�8��f4���~V��`�64�Q� #�;�������F��e�\o���I���L�2S(>�N�H�[)j	kBqd_�����n�G�g���6-�Mk���$
E�'��z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN��:��{�M\����>6�8���]�������6b�\��f��3a|�������<|��iOS�.J�SPH�w>���e>�e9ulm�F)uA-����6�/�bct����s�6�j�����A���O<���b�"K���&�������T�OoT���d�����H<\����
v���i��`3���O<X��W���@M���/�����d%���r�fH�B�*�y�PT?�����)���BQw
Eu��{�P���n�BQk�'
E���9�b��7���_/O�k���;w��n\���hc���(�>�E�)F�������$�~C��TQ?Q�3"��	!��gJp�L;�e ������aN����K��SV7�5Fk�S����OX RE�;�x�v\?��)��.j��'��xbi���������K�;!�se�PT?f	�}�B���8x\;�d��y":���.!��'{l�(������)
E�K������B1;�)�q�PT�:�'
�x��)���{�P�I��S(���DI?~��K��2�=��ta�Pg�Q���:k#��E�X��`�^,Z��*��9V�+��b7�d�j4f��V������?�R����'���S�Q���E��s>�5��
��m���VQ?�}4m����]�����K-���>��"���mZE)t�u�kW�!j*��D��~$��K��D�m�9��S~4�������$@�h$M�E
P(*�\�
�:@��PT�N7�u����B�D��4M��?�P4nMS(6���)S,ST~�g���"��*o���+F9Q�H�;��O��[��P<W��^+i�B�C�~���s�uA~�=U+�����>��4�(S'�!�n�����~�BQ�����kL
K��2m������2�YNC{����=h]��5�T��[�3�������+���_*u]�D]�������Q�`�P�u|����?��������p������,����&E�B�I
w���Y8	(�]tI������S(�c��b<
u���X�=Q(�$��)����K�yO�J�&��#�z�]�.����Xg�U�	�*q���~�T	J+��G�C�
0��2�U�t�<���-��3���r�n�W�v	��^�9
E�������vvS��(��V{�x���G~snQ��"CBR�����_�����|��:X�~���Q�P4�h����������DS������Np��R.g�n;��p��H�B�%�:��I`�����PT�\�H������S(�c��b<
u���X�=Q(�$��)��=�on�:�Z���>�h��A�N������t�\��Pv	��gJc�&%�O�(B��VX����~<�z��	�$���szp�������@�X���5�d�u��f��LO*��V�F��@D^<���/�����^�?�_�����:�r��g�q�p\��.Hm�M�����k�!?=���8qV������E����\4��^�&@�����G�	P(�4
E��e����N���;��:��=Q(��P�L�������NB��B1=�>
��%�X���,�Y�������?����L��5�X."�Vn��qi���g��[��m��n����D�'�6h����b�	��m�C
�����>�1�����l
���"���E�S9uhm���Dt�XW}���{�����>,�ZS�u� ���E95F���p��Bq�z�H�����P��57Nqc����DF�P4�(�#�	P(����)����-
E����B�(&�E�h��R(&d���&�m�Y
�F����bzp��	��U�#��a2����h
���L�fz�3�*�����0^X���m��C�1������6��g��2X�
�����8p,K{z�E��B���k�Q(f0in�kL����,�Bq�G������i�A�;��4�.�o���dS>���h�oo��Q�5U���"������i��u(�"�|;FE���7"u�V�:^�:m�s��M���{�&y"\���Plj#��m�(������)���BQw
Eu��{�P���n�BQk�'
E���9�bz�E�)��?�E������7�������fz�3�*���������R
~I��6����s'S�n��w*�jG%�}������y�\��o�#��R7n=^c�c�LK���o�����X���^6�!j��9����F�����A���R���@��G�P���
[~�r2�;(��q0--+E`��?�c�n�>�*��^>����A}8o^(��x�hZ
E��L������B1;�)�q�PT�:�'
�x��)���{�P�I��S(��������A��.����v\3��nm���7��g����$�|�w,�=U�P���~~w�t������;>����=tR�9�-�D��5B����:)k�W��1�Hk�dS(>���7�c��ql��,c��=�~Q9���H�6�-j�9P�J�B`��P(�5A�FE�]���V���y�p�L�p�����I�Q�����$�{(��	��z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN��>�������8[�=a?���NtaX����x�?}��l�KB��`�� ���� ����s ��L=��e�q �N�4���D�b�i�(�V7�5Fk�S��b�� ~jYE,m���2m����1"%�������}��D�
ay������m5�P4�d��-_Z]!"l�������n��Y�m�G�5[
��6�<�&O�BQ�R(�g.{�P�w
Eu�)�����B1���e
Eu���(uj����^�;�g�{q�:eW�v�%RW��	{��O�u&[��P���z���!��k���*@+O�#d�+B�/�R�J�G�|�����!��>'�@��%c��5�X��Z��P��D(Z�u����.���Yc��i�'�.'���R<��i%{�"�~����o)D�v�G��VT�@��r�.��?_�O�b��^�Uc]��:�z�uv�/I�^��b��$�}�w��M7�t�����M�>}������������>X�=���@���`8����Z���/�#j-DD���|*0?�?�T�����s�n�����ym1p����do�X��5��6�������p8��`�
5�kLCd�}_���kL���������p��&��"0���U�t�����k���4$���>�^m�9��������`�g5�x��0f�������-�;^�������ym���:�
s.�����	�~I���k�c$������e�!����;��_��*\>�
�4���~*k=[�G_�G�:��E�N|��tEJ��d�Le=^[R�e���7���"'���v�����x�_�yk��erc/�"�v2S��m���d@q�
�
.�@n�O��92����������,�m�2	�	�	�	�	�	d�@e���V�9j~�����!a�r(��b�>����g'����LYM4��3��M<�#���y���l��Z-�0�{�����N-/�F$p>�v�a��|?�]G�����Qa�#&�}V"��{|�O�\�f�
bR�*�����=���	�E���G���2�o(9��T��I�����:��c������:1�1\ ��" �%�X����z�����g���G��!Cj}��gO8��{|�9��D���O��j�*��BR�����-)���n$��[�J_|�*++��S'r7�\��ej�[TTdrol^' �K�2�%�'B��8O����Q���u��R�d>�����<z�������C��L)SY����v�J
����/
��p�X�	,�f�
]��o�dT��w��z�������0L��<��y.3���[���U"21�?,
����]SY��W_r�]Q����p�}��������Z}������������������.�7'�	�c>������=���_�6�e�PZ�5�g>n���"��QS��
��F�z�#�����ti�B�����sy�K����Y��@��4%������W��3CU��0�}?�n����� 7N���H���$���z������>
��?�<�F�5�8k(�g.{d
��pg
Eu��?���=�!��}{u���XC1;'k(�������YC13��|�����.����^V�����^���d}��X��u��P,�F�rGO��Y��':�����.��a7G�=B��; j����q@��f��a�;���
�39i����K�y�ID����QCQFx�}I9Vn����`���<(t'/d���y_%~��<�j�b�um.�b����5cC�l����>�O�/��#������Lt���N�/2��U�5�Mf���$��PT&P(�g.{�P�w
Eu�)�����B1���e
Eu���(uj����^�;��Vyq��&���k�;1}��9�x�?3��n�+B���^[����������	��xpvI��J�A��I���
/Vn��o������"�ir����R�|}^c2g�J��%�����]��k�_�5�6����� ��0��(�x�$��<^y=���f}����k��5�B1����u����:!�����_��SyN�-��{NC���2
�\�	�C�B�(&�E�h2���Pl��oS(�8�y
�8
)����B1��E
EE��tC�XH�/?�\��]��_h��
\\5���&�Q7��7�S�k���"�	��e^|rP;Wl"���.�����-|�������~<��������"��s��n(��b�{�����n�������2vVGy�Dt�7M1����=�@?y���D�]7�)�N�-�^4�b�3���F���^Q����j>A��m���O)�PL��S(1�&(��f�&�@L�	
�$A����@�l�B1IP�F�h ���PLV=�z�
��/*��=�h�. r��.w���i�-�x���
���(S�m���^�@I��!�r[!�t�Yd���CxAD������
0�B�U�"w����F�D����<+#���P��'���}�T�2*���N\6����L�Q
���5`�&����~6�<������i�nO��,)��3B(��"xi�om�����]$��;f���m��'�(��\&@�����}#�zP(����(M�@��
�1�m
E��5O�C�"��B�q]Q(��P�H��t�n(�I��_�*�����^�D=������M�d���\6��(o�����_{cu�ZX�����9/�
(V3����}/��@�O���:����.����pd("2|^cG�h����7���F?����l��&������}�M6z0�|��-�+��W+biO�����+=����:�����oe*�C5g��x������|��.\6��V����|�l���Pl���k~(��)��z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN��9��k�t��)QHNE���'�0���V���_��� O���d�?�G�;_D���j�#w+��NG�?
��|�{X������zm�M� Q�6
�t�g�
�1��Ku�l���U`��mZ��$����y��:$W�4�c�t�B�yWZY-k�=0��I��Y��H���(�n�B1,�'~~2�=U�J�&���������i��!�Vr��b�����$@��$(W�P4f
MQ(���U)
���)
��L��B�$�	��PL���)M��D��I@J���O"����D�)9�tW�s���S��f�&}�Bq�� ^bn}u�P����v�si�IGmL��������m�XJ�=l����iO)��TZ�5&Z���Z(J)���e�4�!����N�b;�4����*��#!��gf0w�C�mt�Cqv�(R(�;��o��P��������E�o}���?����Y��9���9	E�B�(�l��PT:�
�8
)����B1����&n�y
����6�����i�B�(
��P����!<�������
E}��������VJ8����u:-��P�*�'>������;��<�3��iC����m���}xEs="�S����16�b�BQ�0�:�5&�B��j�X�
�w�U`�~��F�5�5��;d���#�^V��[j�z��k��S\����Q���b2��]'S�x�,��������O�0��;/��}Qv�����Z��P�����@�u�(xI��r=]P(�E�[�
 WwA���u|O��4�-S(�c��D���P;�P��w�?YGq�G�M^�
r�0;�2��|��z��~���y���L�zW������l]h�On�mk��TK&���V)�+�1a�v���v�%n[�{J��_#��5�H���R-�	����S������z����;�v4|�=Om�
"������=T���w_&*�+�(�|���j�kS(��.�-3�U�<�
G@IDAT;���0~�j�x��:�V��]��>����6<��v���b�RPs'@��~�)�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
Ecx?���?�D��6��m�w�[�<y�����N��l�
!��l	��������]������JX�0�c5c���,Z���������������}U��9���M�X����y�1�q|������j/��"�{t��G��G:�:���d	N�j��k��.w��������P�?�,g"e����Cx��RD����s���*B�NVX��Rs4��%�Pl���cn�(���z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN�ho)\o��T�v���.7OsaX/{�����P��m�x�t����R�9ly�����*��Ig+w���
��i�wG�$��)�N�J��	����5&=n�n�Z(.\�������!�m�7��a=k�g�=�D����R��"�v�L�z�Xg��f�a���F�L��L�b�/�U;��R�������Eh[��C)���$��(3�$�S(���z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN�h����p���h������j�����5��x������m���`���b)C�y�4��Mt�z(Y[���A����M�ji}��<��o�7�5�O�
�1�^cLC[o�����o�c��JT�EqS1Ml�
�������������"�����=��
�MraPw�u)�=M}3�x������{;*c�8u�w_�A��9��T�PTA�}���(
��dS�I�2x5
E��&��b��X�B��i4A��46�P4b�MP(����)���h/������p)�h�n���u���1J�-W�+�8qV��kWl���<����"�@���%[�xAD)�S����E�P\�	��NJ���u�eO*���x�x����N9k�7Nq�PA
�
{*����Xtd�V�:��)�j���(�#G&BQ�>zlQ9��>q��e�GD�; N�D*P(���>H�@��L�)
�$A����@�l�B1IP�F�h�4��PL��P(1�&(Sf�����,�F���
���=��/��6������~�7��a�j+��2=�[�}xn�7�*�k;������-"j`m�[�g�yq��vS�U�7Lq��Q5Q��cC�OC�2�1j8������������P(����Mw:o�K|��/e����S��T�B�{M�=�=���Y�D�����W�B1���������w�����/�K�|%��zZ�1	P(���p�H����1�#
E��&h�B1 �>�P4	l=�R(�E�[�
 ���b=PL~�B�d�
4O�������*/��@ePK	7��_�����.��O�A�gS(�)�5Q_������X��0��
?��V� ��f>?��u>��N[gBc�8��/���	�F�O�-^c��d�Z*��n�v�/�+��	-�v�"�H9���7��v�w�/���q �J!��t�H���B���G)��=�P4�h����g��^�-�Wj��R&���?��G���H@
E��	I�B�H���E��'���P4�hr�Q(&����(���z��33b
E#(���bj��Z�B�(���}x}�?�������7���R[�f�q�Si)�BQ�z{U�\���
����)C��wfA*���z��3�,��R.���?r��n�������U
�U;����z�d��2O�0�_]�����;[*Q"�%�$��7��a������BQRP;�+??���~�����@��a�0����<�U-1��k(smD�?$���b@&|L�h�$��PL�	�P(���&)c���&n�y
����6���pi�B�8)~���@T�=�E�tjc��qN��N	���)5h�l
EyN�����h����8OD�Y�P���f"UU�u0�'��()M(�E��u���;�}^���!1�
^cLG\��B���X*e^���7��
��t���j���/6�	���^=���|�@FI^:B���B��Q���t����+�WY�������^���p[>����w� @�hU�I&�P4nMS(6���)M�@��
�1�m
E�&�$�b�LX�B��	��PL���)�+��y�q��$~�;���K�h4��7�u*-eS(�������c�{�|<0���]�I�TX%Z�������a�f-���6����Z����B1M�?�5�x����R(�����w�/���1B�u�:t��v���N����W��?4#�8��Q�n��f��kR��#"�����B(z���A���_�'k[`���Hj/�	�O�B1}v���B�BQ=v
E��e����N���;��:��=Q(��P�L�������NB��B�8�gD���W�DJ8M���l!�H�3�(*[x��8����-�������X��M*���n���/D����'yL�V���W�����?����,���I��~�y�Q�\�P����>W�O�b��e����.8�]K�b?~�Z)��	A�"9M�\?��TlR(�=�eo�E)��l�c�����S��H����ZE���'����#�bK}{�$@��~�(�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
E�x�U"��7z�L����B �u���o�TZ��P<*��^^��{�+��������������HYOq�x|���BN�B���R�
��X�'
E���9�1�X��T	��"���B(>���i#o������Z_���,���C3gJ�}���kD���}�Z�*��BQ��}�#�	b�6���68�y�d�]�Olz5�k����H�B�)���E�PT?�����)���BQw
Eu��{�P���n�BQk�'
E���9�����n����~�������_�U�A��o��:���%�V�W>�a��PtW��o��r�!���t�,�����x��+��<�e��"��7���R(�e^c�2W%?�"�����9M��Z��Nwc�`���m��+}�
���
f_���"���aO9BQ>|�Q�+�|��g��V���)���W��'�s��b�����PL���)M��D��I@2a
E�6�$�b`L~�B�d�
4O����P4n#MS(6'��6�	D�(�5���V��n�H�b<��$[Bq�6�o�XT��n7Nuc���}3�2T�M{*�G��TO{(��V��6���&'
E#�����PL�W�k�������U~�-�������a��.P-9Q����JhQg��}�h;n��QVG�B1�37��S�P��
�n��i!e�\9uhm�#w���"��	(&@��8�#�L	P(fJ0��)Sgf��FPL�
������b��2��B13~�nM��.����PL�]&[R(fB��m�
�U����fk�+���_�P(��K�;���Hdj@�W��j����2����J���N>;�_�c�a-���k�n�����('
�(���PT�[Y��gVT`���}��d��iF�v��=`�[D��?-.�����
���&"&��Qsm�PT>�)G()�������jjJ�q""�9�@6P(f�:�$�P(f/�M)���f�Lss
�4����b���B��i4A���7�P�`��S(�	���N�j� ��X}MDo�e��o,B$��m��[2����v�Y��
�X����e^,��&-�E�l���BeQ<f���0�l�c�j���"�����C+,"d�B1�F���2���TE(�rA)������W�u�c��Dz-\����S%5��&:1�B5�i�j�s�[��;�@��Q��[>\u�hn���H (�A�}�@(3�����i��p3
���9�b�����B1
hlB�h�4��PLZ��P(f0��)���fA����></jL�H9u�`���,�=?B��!Q��l����xi����E����(=v�:������������}}�������B�,���K���?S!e����,��'��u��t�tf�r������w����^^�����m�%�<w�[�P5?(�g\��T�b�8QW��jm���e���g�1���\w���(y�@#@��~�(�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
E�y����s�}8[�EY7��spA�<
E�q'l1Bq��@4���#ZJ��m,�r�W�v%������s��Z9v}���L�{��n�)����g�Q-EEE�x��d����p�iZ�P<'����d)�T�O������vc�P�yW�a�������
l�T{`"_�������[�7��������"e��E�}��jt	�]�~��b��#������
��0J�G�#@�C�"��"�u��P�D�K
EE�E7��X��D�OC�2��:�zO�:	�s
E�yo�/�7��sH-�
,�q�3��(����E�BQ-�@�����O�O�e�C{��oSYA�u�Q(O.��v���'���WG+��=K�#�f�BQ
g�Bq�g����r�Vh��2���������5~.�����"�se,Byx���Fgu)�GC�r*B�������{�+�;���ad_+�3�H������b=P�	�2
E��C������B1;�)�q�PT�:�'
�x��)���{�P�I��S(�{�� ����]Z����'�I��k��B�x�	[��P��[�X�-���Y?���=hW���g	!�������������)�&;d3�]���AT��Q(��5�M(3����*��[�|xQ�O��kc�zZq�47u����n��f�����3Z$~�N�b�\����)-)
�$�JE(J	.��O��jSh��1N\3��D�'����
��
	$C�B1J��C�h,�d[�PL����Q(����(�c�g���m�e
�������9\�J���P���*
C�~mm ��U8�=l���n
��qf��j�x�L�\R���5�,��p��-*
�eL,�d*�Ro{��?��Un)��3�p��R(&����(
C�TC*�����c������T�p�\!fz��&��f��MH�k|����H|!��i���7_Q(�5�
���P\!��?��'�j5��M�;�W<P��"�&�Or��b���� @����P4n#MS(6���(M�[�i
�:@��PT�N7�u�(xI��r=]P(�%��d��e��T�I)�(�����h{��!C���0?�#�Ci���;��J/v��ho[d�9Dt��WS;d�`6����_-�u,#r�}�]+��5chL_�P4q�T��>_���b���&91s�3������gWT`���:��4���'
`5�L�b��P��d��/��|���z��=���
�q�|b(!�N�*
��:r��K�BQ��S(�g.{�P�w
Eu�)�����B1���e
Eu���(uj�����7���D�bI���~�����y.T����B�x�
��Z(.�����8rZ�:�GS�M��rD��g�9��'Jb5��8�$R������Pl��4�}
E�6���BQ�1��l�����YnL������B"��K��"?�����{D}�.&�Q�Pl��4��d����!,\+�'���'�y�0����.�&��%�$P(&���@.�PT?����)���BQw
Eu��{�P���n�BQk�'
E���9��9�w|^��Vx���VD�������h���)��^_����S�*D����Z�3y����.�����g����=y��"J�q��q����*�����~tk�P�r
�S(���U��R��.���+�7�]K�D��\�����v��}X����������'�0���OP(p���D�Bq���������2;�U"����O���!q�F�B��
8���PT?�����)���BQw
Eu��{�P���n�BQk�'
E���9��9�F����N��:$�;��vH�h��ZU)e
�?�^����k���q�%n�D1�f8��U����+ �_N2�����=������x�����!Q(�3�b}W��Z��Y�iW{�
��S�������k�smD��F9p�dw[�6��1Si%�(���E��k����}����Utk~�����f��b���{@)�PL	�!+S(�1�F(SFf���`L�
��0����H�j�B1)L��D�h(���PLUJ+��RK����xR_N��%����yCD_S(F1(��J�x�tY\�y&�%������S�����"3�W�H*A���Kp�T"bt�14��#���B����I�X��3S(�Z�oo��z�~����]`�m�]��)7����{y�����g��a�+������fM�f�m��d�b�/�����x����<q
�����]]��Ol.?QB�BQ	fvB��P4�e�-Q(&K���(���lk����|=
�����b:�2��B1s���@��*1c��P4�c�Vd���]~�u�z��bw���9l`��!p8�MWw�Z�k�Bq���(��}qBO�""���w���?�����c����zj=;D0gt��PT��G�������BQ~�<���v�2g������k&K1(��_[��B��������V<8���&�Q�PLv��[/���XP�;�a�'Z�j���i����OT.�7l�R'@��:3nAY%@��?��z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN�ho)����U�j���#�s�Q���T������U�Bq�^,���RM(�e����;7R�����v�_-��r��"�j�EA��mZ1��a�i�B�8&|d�P�UF��e�s8{(�����1�������V�
��5^��r��>7MsaB���PT?����?����c�����3�7�j��{L��b���>	d�����PT�\�H������S(�c��b<
u���X�=Q(�$��)����� ��N��n�Y-U�|�)�T���h��-��R"?&�'n��E�Lb�����Z{���+��_/�b��B�U��q�D�t�PT1��*(��a�P���2�>���Z"H�D����`\?;6����]rK���W�D��G�Jk%d�%#��e�y������k%�2��+k�xs�?���^V�1�-���F�^#y���G�B�������PTP(�g.{�P�w
Eu�)�����B1���e
Eu���(uj������T�E��������F�(��~g1r8��y�k��J(V�#xt~����FYD�����~�.{�D��c���VW��M��
�.m"��b&p3�����m�B�^,��i�P�B�G������$%��o*��v�R9VYGQ�=}kcM�}���5��Q�P��
u�DB�T��gWx�b[ ��7y�
��,����
{j��b�h�	�&
E��B������B1;�)�q�PT�:�'
�x��)���{�P�I��S(���tY�l�c�j����*tm�����c�
E���nY�P�s4�?�Q��'���Bw^T&^9���{�+���r9�EU������p�EN�-C��>����PT��,�(�'~���(�S�v���O�E{�:�oo����>��������k�����0Q(�5A������A�����kPy�0s�7O5/R5�.�c�E�B�� ��'@��~�(�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
E�x���>u_����
.[_�rcG
��a^�)������J(.�&��N��d���>o��M�%�k�������y ���&&���	n������f{<(���YB���-Q����O���p�%ntk�{G�v��*/���}��X �=Nh�w��~V��'�����h�?v���/��.Ld�9����Ss!@��\F���bP(�j
E��e����N���;��:��=Q(��P�L�������NB��B�<�"k>�"��y�,VSO�v����1~\N�y���UB��V`���}�H���y]��K����/�X��RM.tik����C"Uc��~�� �h�BQ�`�%e�����{;*c4k�sD
����D��:Jca�� ^u7���r������q���4ZK�	�bbFF���P��;������T������p�4zwlY�Fsg{��P4�%["%(�`��	�b-�^P(*C]�#
�Z8L}A�h*��Pl��P(�����)��b����"�,�?�Q���krE�v������>(p�F�����UEyC��B��<������:0g��
sO����� ���
�?��������_�p3����A�h*��7K(�)������H��D�|�enLR���{��ez��6���-��U\����G7!������������P,�E������cM(��Fd��;fx���!��$E�B1)L\�r������PT�\�H������S(�c��b<
u���X�=Q(�$��)��}�L/�����j"M��:����b������U�s���>��c����7f�������o*v����J�aw(VSm�H�x���������)��{~�f���*�����{I,�K����
0��vk�	���������oycT����R�&DTR(�.��NcBq�� ^���EwC�O��N��k9������3'@��9C�@J	P(*���BQ=s�#�bv�S(��N���u|O��4�-S(�c��D���P;�P4�����l�a�j-rC����?��3��^-,sid�uB������8U�	�v��:����[f��e�����~=]��j���J!X9�G�B�<���l�P����x?�Gi�K)~w!zu�!W�o�W��S�#��m�,���f���P�����7��x���h����~��S]sa���S6(�(%�)���$�}����BQ=s�#�bv�S(��N���u|O��4�-S(�c��D���P;�P4����
�V�����:r�C�����d-��N6�Bq�Z/����B�5��M��tbh��Y'�DIX�=-�G�k+�t�1B��s����B6�-Q(*�-�2C(�*#��'���|gtoo�w�+D�6���R���=/6}����8�0m�_��c��P(�4a��	��,.��]��Z����v�@M�v|h*!X�����2����!@�h�TZ�PL��q�R(�2��(S�������Kwk
�t�e��bf����B1j�oC��9��Z���u�������i�	���S������^�����)~�B(���2l7��@�����h���-��jX��|bI����7��5�[q�dF^�2%�F���S(���n�f�oD�#��>��
�1gF�������3"���>,Z�E�����t��w��d��Q(6����gE�����#��k����3Gk�6��1m@�p�(SF�
H �(���PT�\�H������S(�c��b<
u���X�=Q(�$��)��-|"��:��ZP�C'����z�����r0Z+��������'�����x���i.\1������m>�E�8|F;��=\>�����Q��)��f���a<��B���"�����>������S�M�j]���'���Ql+�����"tle�~S(�00���P����]��g���7m
-�J���z�+g�i
B�f�
�&6`�]�PTP(�g.{�P�w
Eu�)�����B1���e
Eu���(uj�����7��z��>��A|�x'��w���,��%`�P<|:��>W�3eZ�(�=�]��Q?1_�k��i���xve�?��x,b&#������E�
������P<��o�!��P�W�;������vc� �9��|�b���~���X����.�^K�B�����������f�~p�nV\;�����R���$@��M���!p��<��C���b�
���b��Ih��]��/��2�r�-�����	T�_s�����B��hr-����a��el6[rq��	H�+�{<r��f�
D"����`�3]U����T2�����a���qdoIJ�}ZXXe������5F���/FM�
���1��Jg�r�n��0��T#��n���v����mR! '�����/�����UTh����un�����[�L���xk�|bE�Oc��=p�hF���Le �nB�w���"������Kn��&�_[�����3U��k�>c��D����V�OG�H����*����Uxss�h�uqKd��<�2�����.y����.��' ����r*..�~�������x�!���c.��U��������Z���-:�_�(�%��H@1�$���#S�������~������$@$@$@$@$@$�T�m����5��.���3�������!�n��}!��?�NC{�q��0z�~���������a��|8�	�x�uL�����o6�1���O (����D~WhBFJ����D{���x�3��s���,�P{��W�.m�������r|�sn��Y1�O�������U�dh3��av���;R(��9���D�����}k�N�<���{�<����p��|��_E��}k}>d�L�0��{|�9���L�!'�d"'5d���Nt�\j:e/8v�X4jNF@���'�����|���v��c$s�^Fl1j+������G#C�?X�k:�h2�H�&�QD22��2��|�_��N�SM�-�Yc���~�|%B�Y����������2��wY�<%��-�s�"3Z=��|?��B8�������dx��>m��*��g�Bx}K>6��|�P�����5�*"XYd��(����9u����-�\�=���_��`���^��O��u�`�6�����D
�M{#x�� �!-b�#~V<|�
�D=E�AFQ������o�F�sR��R�F?z�h���]�F�l��Kk�8~V��]�E�N�`�`k�7igD�n�;���z`����bsQO�'����X�x>u�T��S�N�w������x�PT��5�����5�i�[f
Eu������3g�Do�w��A�s�	�����E������0~�����(~�J7�p���I�j�������(S��E��7�Z����������r��aN�Z�-y��s�?�5���|g~��V��\;���C��������m��h���m>�f4���]C����X���E���&���+
P����	�]��`[\��h�����<���A���b��P� ����3������+��^��R��
��op/�Mrbx/�FQ60�(i�I���$�(����z��G
��p�PT��BQ���(�i�[�PT�Z��BQ'�vN���w�7�����wW��������.��H-3G�,��T�T�!!������q
�y��F^�h�)=�P���C%.����D4��\�<�`�Wf&�<�R��jG�h�x�t���b�'5��Mvb�8W�y����!����ui� KN��=�zK�I���<�����X�����y ���h�KG9p�x��#��4�G�=&"@���?'�#@��~@(�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
E5��"��"y2�?���m��7����M�>�����2������2�����j�nV�}����h-{��"�X����7b�.�����)@�v<��<K(����-����cA���r|~�&���`\?�a2.�Qe�����m�E!F�$�������w���D_g����?}:����X�)R_r2�@]�x���_�T�C'�s�f���S]�}������Sc�D�B1�F��BI�PL���P(4��(�e�j�m�9
�F������pi�B�8&}D�h��R(&d���s��J�z~y��N"��7��O'�!7Yc
s�������]��wVF��N/n��\�JIMa-��EEE��?��b)��zjW�w��1�;_�d���b�S��H�(S(�E�|�~-�Y�����g��&SkWF������RYSQN�"[�o�/F�6�b9�T��W���+7�
��w��t�[[p�t7&t��-�EI�PLW$�� @��~(�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
E5�ez�cg����9���b��|��{7`��;d�MV5G��z1C(�1�UF���KE�F�zL��g�p�0Zy��M�P�B�X��~ � ~��At��j�.���k
a��!@�h�d[1R(J�y_%~���������B�����d�+���
���q4�f�W�vc�@c��(3����+�]��1�=�������n��O�.�PA�BQe�A�P4f�MQ(&	���(
�ds�I�2`5
E ���b���B��)6A��"0�V�P4d����_��I���l�$������M�>V��s��!#�(�.��k>�pu�ED�|��Q?���9B��E���77��`�H[��S�=��;��QCC�h���1R(�:��v���5�B{v��#����������gBx�=/>�US����."���t�P��`����!C����*��p����U���=���|�&u��B
E��	H�B�@�I6E��$(�W�P4h��Q(&	���(
��F�i@3`
E ���b��Z�B� �I4�D��S����[D�iBQ�}�%j�&\�\��(���������]����_
2	%^(z<��T�U[��'�;�����
��'���z%�$@��&�473R(��76�E�Q���L:a��.hr5��]���gD}Y}�����T���2�2��d
E���y�P��{(~�l��i���z��nL���4���=�H�B1E`\��M�BQ�P(�g.{�P�w
Eu�)�����B1���e
Eu���(uj���x�E��?.��
��5��������n�eU�#-�'3��W���7���{���t�H�v�%nto���<�
�/N���z?��4yr�7�/�b�#w�j@]�h�-��jO#����!!����G���)������"��������A<�|Y,�t����=�[3N�M���<�����<�,�r�V����}�en������G�=&K�B1YR\�r������PT�\�H������S(�c��b<
u���X�=Q(�$��)��������ui5���m>�<����m"jC��������*"���������~s'��o"��m!S�����P��a��Zzr�2�SNE��h���=����_f(3����F
�]�x���hMV����C"�yDo��M������_�#��(6yL�]��������P�4�N�B��C}�~w��v�0��kE����Z�����P(���+�@�	P(�
E��e����N���;��:��=Q(��P�L�������NB��BQ��(6�������.B�hu�l�=���c.tP(�4f���a|�%()�n��]��\�]hor��L�~�P������^|z(��i����v�;����hQ�R(�n#�������
�+�k���������8�&�����0�_��{�+c�r��[�e�;��.(cH�-��'������X������l���0��aG)�PL7 ���PT��BQ=s�#�bv�S(��N���u|O��4�-S(�c��D���P;�PT�[�����m��{]Q��i1����E����2��Pw$M�'��bHD��;��Ya�	��}:Y�������P7BQ6}�$��7��h��*Vz��,��WZ����/��bH,��(3g�JF	E��z�y�����5�����|�$����F.T�#xogO,�9���-��u���6����
��+�}���8[����Z�P�����|���=�T����=�$�-i�y������a�PT�\�H������S(�c��b<
u���X�=Q(�$��)���o����=�r��(���2]���O��1FEy�|�G<�V������k����R�z��R�n�S�?�Q_�&���zDjG{�L�h�9�n��5Fn?d�8�i�.�d�3J(��|K��1�&���WA�n6�����n4E�.��?;����y�B�M��[���IW
�d�Nc����?���y���vU���)��������|�!�2gk��P4�'[#�	P(����(�C��
E%����B�<$��A�h�F�Pl�iR(�����)Dc�������~�����|�8���E�l�~�};�j���0Z(�)���>��%���C���b7�Q
�P��U�!�;�s+}��_�?)%���6|eVa�n��=����1rK
������QB��S!,Z����k���8e��n��������y�GN��Q����8P�����M��q�d+�}���xsg[|z��*MsOf������N3�7nK��PL��!�"@��~0(�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
Eu����wc��)�j��{����Q0����0Z(=��cOu@��w^��������Mr3�=�m�'�����`��@����E�<<zo���fa�XJs�#7�PL`��%?9�K�!]���y�a�W�u��G��z�/��[�Uqu����)��"�)������q�.�}MW��oM(�U-��2����=�D�-q�y�M������PT�\�H������S(�c��b<
u���X�=Q(�$��)���o���Z���N�hu�\�<�7��)�B��������B1""��g��������|[a4��]����hH(�T�;���*P*��>}�j7&t2JQ��\���M)���&F	���x�o,��P����`T������R����������&�(~}N��7�~D>�b�'��{��x���xf]gh�|yp�����<����
@�&L&@�h2`6OF�P4�h��(32c
E3�&n�B11#���P4�dj�P(�����)�"�|;���2rM
E#i6��~�?���
'J��) e�����1s�n#�����F
�@�
[�W�7��c;R(�qw!:����qiH(����^l���=����o��
P��������_c����Lm#��|Ha�����R������}��"tl��S(���}q*��=Q�H�������i5Smi>�A���yj��e� �y�����6�\�.�"-��;�/�c�q�L&@�h2`6OF�P4�h��(32c
E3�&n�B11#���P4�dj�P(�����)�"�|;���2rM
E#i6�V�����{��C���JNW\��Uc]��k������B�������~�k�?t`+�um!ZP�������b�H�������7������-����
k>#=c`RX���P(�.�U��R".�����j�����,���Z��G<�f*���S%8v&}�F��}�����|x�B1�6��������b�qO����CP����������5
�f=�<��H�BQ��R(�g.{�P�w
Eu�)�����B1���e
Eu���(uj���x����q�7V��}�P}�
�&���+��7zD��G����*/�~TY7{�S�s��I�?v�	E��_������<]Z�����B4�(�2e����
������B�di�7���:�!)����7��_���|h��%�X����?��C��N|�uo���Nu)S%���U��������~b��=x��8���:3��Z	
E%��		G�B�8���D��,)c��P4�g��Q(&K*��(3g�N��P�|
�����b���Y�B��������^Z��j����7Mucl��]3+��1R(�;�c��q�d���\��w��_��mL(�UO	���J/��A�����z� R=2FQ���<�C��<�t�4B(�?�kk}x�������i����e��VNm5S�DS�zQ����>�_�������)�������=_&:���nq����B��lE>�?���
���q#�
E��)�3�=R(f�;��:���X��D�OC�2��:�zO�:	�s
Eu��o�u���^M'����'�(�p�����n�ZBOF	EU���JUWKUkA���������j��)�P��7�����R!�y��
���t�@IDAT���!��e�5�B11�L�0B(�k��5>|�y(�;�"u�����5�������q�<vND���T�?��������b���;�PT;�����"S}�b��f�7�0M{�r��b������P�D�K
E����B�(
��PT��
Eu��{�P���n�BQk�'
E���9��:��7�/�??���G�1�r�4'��u�i�Q4rT���@�v��o���k[d�o�/��a��}���@"�i�N������������S��l�S��d].�I���k�b���_�����%�����5�������`xo{�;�C[�:��)�;O���SaD���o��;o���9���>.����T`���T�W�s���.�V;�-����$�
���S(�g.{�P�w
Eu�)�����B1���e
Eu���(uj���x��������t����.�������"��Q1J(�.c�HM���@t�dt���6|sn!%p=�H(�M�}</jR.��1����n�}�{�����VIa�{�q8�B9|)���P�R}���zv�2bWN]�Y�Q?��H����?/.�������	m�V�Q��c�u�)�����x�x���k�xh^F����O�P��	P(f����j�������)���BQw
Eu��{�P���n�BQk�'
E���9��:�uo���.�w�V��B�I7�Bq�u�E�GN�0J(:���x�}��a���:��p�8�b�Sm�EY�k�A���e��%����z0�;��F��U�k�bBd���P�q�z/���?�2��O�|���V�o^>+�����>��&N�����K����������)m,x����YP��)RS?zO!:���������BN�P��������(�gb�;�f��}
�����.����k��P�a�r�BQ%���(kX�Z�PTE�v?��y�������{�Et����P��)�D����*2r��U"Jc��~�J9N�h�%��}���a���/��d��L���d��%8.��k9]9�����]��vt����5�B�<���L��L%���z^�E�����G��������Yh���~�gJ���|p��+��6�����BQ�������x�Mz������k
��T�0�'P(�M��J�*ik}Q(�g.{�P�w
Eu�)�����B1���e
Eu���(uj���x�����z���tbr*�Xp�$gT�������
W���x�_�1��q������<�v��%#�F2J���^���������B�i�������9no���P(6���3��	��|��[�z���������0w���
|��p�XM�k&:1K<8��P��Na�PLV��1������@M��y"2����8S�v���@�(3F�H@-
E��eo����)���BQw
Eu��{�P���n�BQk�'
E���9��:�uo�W��������E(��
�x�l�,�]���`�P,�F�r{�,�F�@�O�����U��it��PG�p�T?|�4VGN:��tc� 'd$(�����P(&�-��2�����}?������*�t�+�]���_R��;*ET��<v�H�=�������BQ�0�Q��P�#�'V��1�=���B�ncJj5��^"@�hH6C�P(�"]��b
�K�*i��E�X���%
E�	��>�b�\�~�B�l���O�x>�P(����Q�f��n��^+��O��u��t��N�a���5d����x�L����C-5��\S�����C��96��P��d�S���.���a������z��j�]I[�q����n�{��a0���@H��JjJ�$|��;���m����^q��������3��jw����Vg���h��s��wt���9��1D|F�r�Qm{u���k*?�0P4Ef�Q�@��������3����
�;2	�&���N;������\�,��[�����0���+(���^�=K~�(�vz�w5��f�|kF�[1J�F)�vX�`�h���0P��]����1L�e�h����g�X�0&f�h��A�3P"��(Z rI���^���p1K^`���!����N<���1
�����,��{�R����0�k��$2By�@���w+sD��\��R�Z6�9��������X|
6���V]�^�H�N	(�(i� ����:���E��x��L�8'�%�<���y��������@��;�r|�Z������4qq�hR�������GmM?�V�(�"�`,T����b�4�@�z��E�U�;E�tg�h���-1PT��}��i�k���O	k_(Z�w���%�cc�
���X�����>.�o������wt�~/�;#�"�)mi"��S���>�_I� �������I�8�!kL�a� 7�wI�\]A�
v(��3F=@����]��,�;�6
�����9���Ij�E.���0�;E����|���H�h��\[De�h���
=H�������7�V��-/��1-P���;�&|>z`��c�=�Q(Z?����Zd�X5�3P�Nw��i��@5��g�h����(�������uz[��-�>���������dn���1b��7c�s���l{.����S���_����.U�������^���-
�W���9��*�`s���\J�z��	��7Yx'.9is%���	��u�;��G?fI�����|wm-�(��h�h����Z�Vuu(��}�A����.+G|1&�<����C'zV'(��r(V�pXu
0PT���(��z�kfD
�F���Ee:]�����*��@Q�NF�b�h���m1PT���������?3��y_�d>^<�?�["�����~��3�
1oC.��p��Q�����x��T�bx�E25w=�������n���c������T�9&|-.�U=@��#��*��}s��wM�r�j�O4�#��o�zp�������M
�=��Sq�(*�Js�,Om��3�����������zv���s�j�+V��Dvn���E��i��@Q�r��1P������*��E��Q���*���@Q�fzk0P���������V���"������X�K�?�V���.�b�4)�E��u��}'���5;e���������I����
h�'/��S2q�L���M�}�������"�,o�6����g�(�(�����U8!{�X+��R������Rh��L�����u����>�W��P����g0S��]�I��H�N[����.g��E�G�[0Z�F+��X�`�h��A�3P"��(Z r�&(��CM6�Y�a2�4E��
a��bqL<�@�Dq���l���e�X�12e�����_��k�<\���m�z�"�O�\��:|Z�Z�6�5���m9�e��v��B!�[?db��|x�rH��-�����������T6��+�o
R@P��V��x��<��l���%U�y?����.��W~AI��"O��~.�Q�G���A7p3[���E9�p���"�ku=�e2P���\(F��p�X��
0P*��(�*o��(V*��'(�*o���a���I]�!�e���
EKd���
��v�����[s1Cx�9#/,7��Q"o�����=@�P$�Z������W�Z6<us
����o��GP${�y�vYiHD
9Vx0���D�������9&T>�]�@���}�$��x���������Q[!T��������l,����l�;�����>4�@��1�}�}<?����I����$��3P4W~�n�M���f)�@�,e+��@�rm�<�@�Lu+��@�rm�>�@�hE��c��L'�K1P4Z���(�����P5����w��<v.�*���(���n���R@P�<R�?����M�������LL��aFA+P<-rV�W��u�^(w�0��t��`���a�C�^������V���[�O�����p�@�6<2:���������e98vV�����^N��R4������7x�x�c��7�����^����"Q<G�!O5K��P�U(>7�
hQ������a��O?��(jUN_=���SS�����+�@�8-�Xb��F-c�2P4FG�V(�UL{����g���YR�G����a��	�wD�������_SP��H�y�J���8�j����K�����B�@��a>���e������c�6�K^��Z��n�a�l�	U��iW@+P<*�NZ�_^�$1�s�=�cc^9"���7'��h(��5�1a�[�wE������O�KQVl����tn^���I�(*Q��D�#mD�?�@(����MU�I�
D2�ED��$�J�1�0E���<�J�1�0E�
a��bq>U�b?���`^o�C��/Ey��?2	5�#K�(���Gj��\l?(/�R���r����<itw>�
h�t�?����%98R��25��k{$bt/WLxpi������^h���i^�`�!�+�N�Mj���
�t�����L	���(��������|e����{v�/�Y���'e��dF���A�^�4E�
s��P��bU��m�:`��C<�U(jNg5�:�X���F�4Tc��A4�0P4@D
&(jMg�:�X���F�4T��?uE����B���w����m�m94��U�
��]�������Ey\���^z�l���Q@P��]�����}�(��G����HB�4{Dn�P�9��:|\�Z���-��9��)o.��{E�x�~�46�������]S;����J�V����p5D��E��I"���+?�T��
��>��wJ�(�S��G�#qT��O��W~���I_(.\-D�������4��YS������6�����!��x<(,,��nGR�xT������?V��D�`Q��hq���z����U��n���_�=*Ku�.���N�LII��s��?�H��� PD[bb"RSS�����Y�������~�geeI�l"���:T���bc�h��e�`�XV��1P�J���0P,����(��n��(V���g(��np���b�Q�f+\j?�b��m�����C�����u�1���:�[��*��S@+P,(,��ubaUE�Mk�?�O7&�fr�u�p����z�"iU84��1�c���gB�1jmq��
h�� !�v�x���������^L[�^p����	hu]O'��|]4p4(�a��xg�����%�E���
�xj��vl�c�h��l�(Z�sT�B@�~0<x��9�O�����K��q��>|8&N��.]�H -�p�z�f��w�}��;w����Q��u��	&`��a�[��}��B��]�0c������w/�G����n��V<X���|����c���X�p!:$�F����������O	b���+���|�rL�<+V����G%X��ys2���C��]%�X� ����7�`���8~���A��mq�����n��4{c�h���3P���G(Z�r�6(V���#�R6�]���1�,E����.���1�E3�-k;�b��#��v�[���H�aX�L��T��S��V�x.�3���F~h�.b��<~c��>�b�@q�
���=G�����rH�D�>HY��X�<��z�}�Z�b�X��h~6n����-C\S�O�`��B����
�����	�[E
�P��0v��||���u��qIv��_��1��m�(�6[�R�V��m�g��������?�����S��!���E���[�_����|y"	 ��?��|��!y�$��`J��x�	<���h���d���{��W1m�4���z����G�x�����B��������oR}�����!���.����?p�w������~���~��������k��=�{�9�3��G:�����'�� )AC�G��������������G���(��jh�C�c�Y�f)�.���y����j*��@Q�VF�d�h���l1PT����(�h��B-���(�����|����`�C�v<|}���U���qF+P�{"����������$Ja7��2�^�^���-��s��b�{*stn�����hXK^1�
��z�9&��&�{�(�����YX�C�W��
�2^�"�#����!y}�;'K�����`Ux��jBmC����X2��|O�=���=G)���\�syE��r�P��bB�t���#���������h����z��-y��"�+���%K�`����_�"yR��[�<}�Q�#��;��=����
J��������84h�����|�����I�}���'#�9�m�S�L�B������$�H!N���^���	���>	��#����z�-B�6m@�(d*m���	7n�(�� ��$x9�|����X�n�K���B��z�N�:�Q�F�7��
z��)�E�X����%@��CI�l/E��pZ�EK��7�@�/��;�����uZ��@1P
��(Z���%�>%�}e�h������q�la�����$g\��at2���W����lI+P\��ZX=P��V'
�������J���^�H�~X+<D�����CQ��
����#��h/���X��y�$E�,�H��k�O��S������y��������80�����9��}.C�|�j������e��L����'7���h���E~��,����!��(�#;[�H�	
����m��&����7Z"�={�H�n����iZ|&9s�L�u�]$�G����G^��H��<��_|Q|�I@��|�?�)L*�K����<�{�1����^�l�#���R���O%�H�	R�6yS,�m���{����@"AI���}���_���B���b��-}�$�H@���B�>���|�0a���	��1�@1�@&�f�h��a�2P#���((�
SU�e`Q����E�B\������0
(R��?�`��^���W[6��=#��&��j��O�)�@�`���������I�x<|CZ\;y�4�.*�K��%l*	������ ��QO��g�psL�����*-@q�^/&������`
|��k���Uw����v�����4�q�4�����^��`�h�x��T���!����0�4�v^�O��*�������Z�E����f���q@0/))�L�C�?������\�����o�.�����w�.�!�����\.����O$���W/<��������}�����������QZ!���SO��[n�<&�����g#�'HO��6�w��1�������;�����-^z�%��3�<����l$0��Y3_5��w��!yE��;�<����?I�L�t����~��o���.]��_~'O���P�G37�f��6����}����
��@1�.fe�h���m2P��%(��jh�C�c�Y�f)[�n���;���Jx��(]h����W�^\��	T@P����#�r0cU��T�&v<}K*��%��@�r�}�8��	��c�����w���3�-/�9�|y~�O-@q�zf�������
t?������b�����L���K�JS��>���x` �,�@Q�}[Y�-�$���$�sz�
CD^K��e�X�j|<Z`�-#���u��N�8!y���!�%��_�*�F$���m�
���a�)�����7�������W
��E�2���yR�U�9i�$)�)���{O��$�A�8���x�����^�!m��H��u��	Rx��z�O��������q��}�\s
V�^-y8>�B�W����P���������1P4S���(�����V8�}��u1�(E3T
o��bx��(�@�UC�d�Z��2P4K��v�-��<*r���`�^9�VZ�
C;'��A�
��z��h���=Exj,��'5�L�C�����C�tk�f��iP�C�k�X��#gdS+�����i\o��o�psL���^�Z�����ps2����][;p�@Z��=@Na5?_��y�sEj'y,:4����%�NZ|���@�Rit����#"%��%��Q�xL�{�M�h�m�&����S�]
seV�(Z r�7A?\)�����e��I�)�`����K��������K!?����2|�k'���C����9r$(\)�I��������"==�W\z�0���G���%��`�i�@!� �C��H���-�P�G��Hy�o�.������Y#�0�sN�3����7%(H r��yR��+�����b�.]�p��aB�t-�y0�5��1P4S���(�����V8�}��u1�(E3T
o��bx��(�@�UC�d�Z��2P4K��v�-��.	7��$�ykt���?�M�h��(V@P�t���D(���<g�Ftu
O"�XJ�7(R[���K�,W�"�v���D~�G����h��7��+�ou*�(B�32�zG���v��	���$�$�����y���Xg/�4�/r��Bzl2P4�N)@�������������	�{Y�x��K�-V�����G[s�
H�y�N��r�#�x���#!AN����oK9
�"�1%/���0����w�����q�
7H�L)�����+A8�=_]
'������K�-AM�{j��"�|�M)cy�G?�@$�E����S��)7c||�'tM�2E�O���iA�B��+-��u�le��b
�C%(J�!�{R�F�A�*���['�O����2n�[�*��<���t�V�>
]���Q����?����v=���
h�����.Xw�i(J:�wV�x4��w�s\E��9iO���Ph��iP�~��F�I����`��(P�����bX�����E�����w&m��)����t\������"��|�i�|��'N���X���)�����7��CN,�����o�����.��QY��]����~�����/���������6��b\�4J�s}����Wn�)-�{F(�vn�����5��sB~��W�^�<���'fs��<�%;�8|N^�Ms��V^�\��6NF�-�l���9v�����#�8�m�h���q�r@qD����U+��8VoV���@Q�p�R������p��Y?�"�H~����d�|��>�(���:|��wA��T���AaS�M����GK�	(R>������K�����TZ�~=�;�B��
�kx�]wU�G?B(�*A��5kJ �:��uk���O�9x��
pR=�?������y1��[W�I{���e-��*-P�<����T����5sKNN�����l�m��+�
��+�
��+1
����C�X��r�2��������a���`�t�w��a��4�=����6��+�C�$�V=����.��������M��Btm����.Y�n����������_�=��>���z���l3�+�����}��~<E�{|1Z����Nga+��M�_jD��'V�9�wo�8�E��}#�����};Ed�(F��DN����/����<V�l�����^zj����3�k����_	(d$O�`^d���]����=�(�-
Z���"�#pI^��1H�yIP$O@x��|���������6
�g��5�7e�����[n�E�+�G@���}��l��e�z=	(�����<�����n�<��9�'�x"h��`vhL(�,o��{�<+&��r�$m*��E�;
	I^�.�CR�����M��0y�f��3}���=���5
x<��y���`M/b�
O��������
?�F%�-����"/,Y�tL7C�]�7�/�S,��0&\<��G���a�
O��M�0g��x��5S�q]�B�m+F�(��F�����|��`v2=���s1V�"o�8�s�Ss��!q���S4�f���oF���.�5�\�
�6	O�m�!@C1�4,�}����������9�W�_�+@��;]��������q8yA�g�Fv�����k�=�>�E6��X�y�{��n
_84�[���uR����"�f������F�
U��y��h{.����f����q�+_��#��;&���|�����G�8U�/��2@��+&h������m���������w��B�R��o��&��I��}q��QL�4	�\s�T�<)L����^���m�����Fv:t��<%�>
�Z��4M��V���<
	"�F����v���>|x�/J��B�X�?.u���R��+��"�+�����<�S�r:����P4S����7��%�H��7k����\���X^��sE��
e�s(�R��s�C�<m+�LP�rn�Cq�7k����L���}�7o����=$��X��������Gb�;C:'���I�u���D`��s�;�V-��f�{"�,�`�^yR��<gC�a�0��9mTE2�WP��r���\dy����m�{D:7�S��i<F�(�cbTS.���4W��g���^[�/�}3��q�S���R�����8sQ�l7�e�C���u��6�P4�v������d���)�Z���v�1��K�f����>M{J2�Q��(���.y������s'^y��C���>��O>)�>�\��t
�J?($���C��K/I���O�������x}�v��!	�"yG����~�)�}�Y<��<�����O7n�t���H��a��|�r|��'5jT��_~�������[�~���#]��%K��g�
�@����7|���R~�_|1�2�g�h��a
2P+�)(�"kX��JdX��I��EUrV���aR*6�@Q�T�d�h��!�)Y�?u�3V{0��.��+[���x�:R�'��;�����'$w����W91�G 	!s�SFE2��`�,��/�|��Vz���W2�����~���gc�6���2���.������]g���f���&�����g;-���]p����m����s(�`�>Y��1��x�fX���(Ec5gk�+�@�z�#�E
s7c��s��oD�5*���&N�(���^{M
WJu�Q�
J��o��-��#�/����z������AO��k��]�jq�+q�������q���Cj��;���b�&M�����~�������_-�'oF
�J}���;�p~���)���o��[o�U�4�0�t�s������!�(�+��`���{PND37�f��6����}����
��@1�.fe�h���m2P��%(��jh�C�c�Y�f)[�������b�Z��X��"����x<[*\�r(����H(��i�Ct��\����e�4�c�@:4
�-��X>g4P<�Q�9��k��\I�x�qh������ ���
E�������(�������C{WwO�M��1���P(=���F�A��� ��nL�BN�7����~�N��<)?DS��
��t�����0P��1��z(V�DL��]+�4��#@�(,�m��]����w��3�W���������"������7���<����<
	�Q=ZP�z7�4$PG�~��_K�(����{N��H�z��X
y	R�R���SOI�)_#�����6l��&I����J}�:�/���~���[�B�����F�3P4BEu6(������RR�����S������e��];=5(�QO[]��t�[���^��W��O~+7{���\d��@���,�J9�7�%�
������Hx-��'��$#=�8p��V;��X�EU�c4P,c�bg>�4����F�T���U�'*�Q�/�d���*Xw�j�b���_���=G���t2��7�q�^�f]�#�%
���xX���9%y��um��-i��R�a�����K��`c.f��j��v��O��mV:�2P4Vs�f���<b[����("������ �B��@@���3RE��H������/%������B�>�������������>�(��_/������<.������Y������G���A��[�J�T��?����w AM
{J���o~�[n�)�,}.X�/������r>R.E���Y�t-�(�c�:u@�O�>-�8%�Hy �z�-���~@�\�c���� �I� )a-������W_}%�]$���}{�=��c�h����e�X�6f�a�h����f�X�6F�a�h����1PT����(�hx{�kdF	�f�������{�����o��bA���n���tq/x|4�j��Y����lK�����o��H�)�=>&+`4P$�{��c�26���t%���	��������bZ~�sLL�d���������q���VC��7
�xu�R/0�u������E9�<�����z�����@���%����L�������;8p����
E�4gKU����="[�?(O �:l=����Q�O��#�?Z}���1a�	���,
{��c�������GK������4i�d� #�-���v�]r����	��� �KKK����B�@�:u*�5k&AC�����]���O�>R��-[�H`��%�"�>u�����o
�:{�l�l�R����H���<�t
�_
�JaO�N����#�2����4�;/�������#�H�N+~A9��TS�-��t2�E�Uf���2��(�@���`��^3#j0P4BEu6(������R2��������;��o�X��-��k{$�����I�o9�K��[�����.�""�kDX�1����c[IuWoP�(<����Kr����r\>[�E��X���1���Q��(.����98uA�kvE7z�5w=��k5��/G�E��l�/{p�������mP��=�����3�xwNv�uw&��7(����o�R�N�*�@1J��n_�pA�pf��"��@�,>>��������_�+��qc7(�G}��>�L���HJ��W����|���U��y3*N�>��7�#��p8��R~E����Tw��ER��+V��AF��P����_�*�M�D��
����K��I	�F��Q�T�g�~�Jj�/7_y�<xP����<"	:%F�����c�zf�a�h���m2P��Yg(��lh�C�c�Y�F���E�ZY����j*��@Q�NF�b�h����S���b�����5���z�u��R������g�)�(�����5�8qN^�oQ?c������I��@�H@�M�������)����F�1��3db���9&������+r0o��V�s+����]ceMcuR�Q���9k��=���q�{�*�2��3P4��^�5W��x��;�amF�rbH�������-U��F��n�&�u����O>�������d�t�M�7`rrr�k8u������������5j�@�$oF
��T�i�t�58o�<)�)�
E��S')�c��=%���
RH��3gb���R����84h�@��$/B�l���0W�Z�3yK8p�.��m���e9m�4)t���g�����H�&��2�5`�A�	��EbX����b�0�@Q�X:�2P�)���5
��E�j��@Q�hTa�h��
M(]��x�0����#Y6�e�x���48b<��B��S
�������x�Y�f	t�����2^�/#��7fEj���L^���_J���KK;'wZg��M���}�j���"���;����s� Jylo������G�7���O��������rw*�����e�(����;/K��������[:���K����y�����Z�U=�>+�R�*3�8ED�`������@��`��P(��1P4XP��(*��b
S�)�*��YT�b?��zov��������)hX����R��_X�}�)�O��V�wN����E����o�)�?�f���"����E�>�F^��y 
�I6�K��"�B��������*����/3�����c-��qbT/Rxn��>kD���P<sQ)���OF��	�2��@�����w���fb��|�O63�["n��B������f��b�(�@1B���
(U���R��+�@�8-�Xb��F-��2P4N�p�(�S�����5�U��2�<E�5Ub�����)�(n:�'y(:U(5N���a{��|[jGC)P<z�����pi.��z&b���Q���!��I�=�����,���W��������)*1V75sL�jd�u+��9E����p��|�������u=\�:`@v����el�+�z�|~��Rvf� ������������ ���8Zx���E(���F�#b���r(*�����RR����2�4E��o��bx��(�@�U��d�^#�K0P4ZQe�(*���Rj��������%/����5�qs���F����P
W�����98rZ^�o �B)����esIUw���>3�"���Z*B��FN�mE���LH-����f��U���n�@q��|�1#�/�s= r�`�w2P���
1w}.f����xm�����P�=������s��g/��e�z�R��>W$2P��+W�L(F��p�X�J`�X�4��`�h��!
3P)�i'(�&m�+Hb����\��$1�E�%�����rP�b?�9�r1�gya5��n�xtl�)}��F��)+r0������������y�p{�Y+#��L���W��;������m���{R��������j��n��]�@q�&-���L��j������%{���'�(��������/�4�3~�7�H�����������gga��<���1��j��x]hU�l�Dj�=���5#C��1�V@�KeXA��I��EUrV���aR�5�@1�D�`�h��a�2P+��(.�"��dH!5��9�",������<q�����
��[C��3�;1cD)P|cF��.�*�tL���5�����3�b��
{��p}Y8~N�4����\���	wbl��T3�hT�TF�@q��l�a�,�<��h��Vh��"�)�@���\�[����98]�G�����$ti�{����@Q������//�y��oG���z��+���k��V�U�?��
�V���j�tW`��[BM(j�Mw%��%Tl���b�-�@�P9c��X*�
2P4LJU�(��KWa5��EE�X�7����\&��;RQ/]�b��X%@1+��L���#��*\Z\�������z���
�8c���{��kQ��'oNE���
!�������9��`��)��O���� �C��"|��=]��������}����{�p�v!�H���"��o.f�X^5��)��g�TI^��2�uv��f��^c�Y
0P������a`�V"�0P4\RE(*���B
��R�+���M��R�+���M�6�a�!�1�����_����Y8zF���<�]���9L���Qiq���p�$bZ�
��:qmw�8S#v@Y��"��M����iY(,qRL������pE��~�mj��X����U)t��_��SE(*�O)���N$9+z���h�w6�Rn��r�oz���e6<[\%�����k=��"�����e�x�<��0��k��V�U�?��
�V���j�tW`��[BM(j�Mw%��%Tl���b�-�@�P9c��X*�
2P4LJU�(��KWa���O���9X�K��p%�	�9��u��G�UVl�`�X\=Sf�E�x]��������l�H���+�3�p�d����{'���\HO�=�/�s�_4�����x1�O~����dp�����]�1�'���T�J���:�������XgB^�/
u�l��������gb��
�=������g�T>E
0P�������E����kN-2P��(Z�;E��l��b���3P�Nk_K}JX��@�:��.�SH���s1s���AW�.���cS��t5hI	P���,,��_���m+�-�8�~�
�g�]�����?#t�I�x���d4�e�9�R�s���v��G����Ldd��Nk(v�7z^�+S�<:w����=�A��1�Z&HaO(SN�1����O3p�li��[D�S��Mq��e��\��@IDAT_.�
0P��q�^��*�@�RiL;�@�4iCf�R�N2P4M�
�(V���-��B#+Hb���K��Ae1�����l��o�/���#��B�5�m����!�z�[x�E
���7���P
J�����h��Q+%��j�V��@1�������o��W���r��~L2��Hy6���v��%m��V%@���|����\(�ml���h��aF����c�
���R�|�(��o��B��@Q�0�<* ��,�����#���6!h�Dj���>��v�+�@����{�
�R���*�)�@�Ua��Z2C*0P4DFEF(*���B
�T�A��d2�EC�Tl���b�tT��_XT�-����l8�-��?����8��(*�p@�|f!^�Jxk������������1��O��

Y���|V!^`{���=�5c��D���
{�v�Q0�\$�J��'��`c�?�d��	��YYh��������@��KJ=�)��7��Fr<��;���<�����v��.F]�w�<�n�9^�wE���!�f�h��l��`�XU�s���F(jNG5�:��Q����tTe��C<�U(����
R��*3�8ED�`����4V�����D��K��y9�V�#��+�:`��-�+��#P��_���8��n�������Cj���Y�
�7o�_.�=y�X�Z6<t}2.o`�r���X���1���Y��(��M��G~	���)=�k�[�P�-��a��y���T4����3PT#hIY/}+�����$=�q��m(�DW�1P�L>-
0P����~�%
0P��V`�h���"������u�3P�N���(�a�>E�����@�������[�b�Q
�&@����RG�{n��v�X������W P�.�5f��EF�m�7�c|?:6Mo�KT��U@����E.�g>��{������~W$
���	[�e��t�DXBE��N���{pR<B�i����:&��;��|���'���-�?����y^����$rO& '�E�r�Ka=y����.�u������=j�d����w�T�Q:p���U����c�@�z��E�U�;E�tg�h���-1PT��}��i�k���O	k_(Z������"������J�/��{�q���Sb.?���
�3#S��b���!�1�*'���[Ck_b��U@�4��{ir&v�GQ	�������GS����9&��I��54P,)���/�SZ�A�=�&�����s���T/{�/����v��0
]����g��"�E������<�/rg��@i����J�r�����@Q��\%�`�Q���a�+�@1�FF�`�h����1PT����(�h��(V���g(��n��(V��Yg(��lh�C�c�Y-��9�EX����g��i��~M^�+
.��j���G��P@1_x�=��%>]�� �E�O������w+�"���-��d���o�v�
�/���o�
o^-s��1�����"��G������
���uI��{?��w2=�G1�y�E[5��#���P|���_�;��y��L_��������7Z�w�4�@1�<|2
`���]d`���5����|+�+b�{���L�0P�N���(�a�>E�����@�������[�b?-J�>V�g?����Qo����p
�J���J��R(�x�|��<�JsT���;%����u��E"����b�����$^}��C\���T����9&t1�C�|ol��g<�}��7sx�
o��o4�%���h>�6)���G��!���)���@AA����v�������F67�H���y���{���qm���d�XeC�
�E��d3��U
0P�J��v(�ja�E+�.m��b�f�1P4[���(�����V��}�5��E+T�������%u�Ri.��nI9��GQ�����~���������������n)���\$�VE_7^���
{
��[k���Ub�k�c|���:BE�J���l�����o�A�0��
k�N^u�����lF!��8�������I��N&qK�
�G������%���n�D�N{�IB��bX��@�+�@1����
�W��byE��@�|����@1�*�c�h���(��������z�Zc��S��W��i��@5�����O������-�JsIQX�k�;�aOy�@(�H9�h���?��+��������E>K
TP\����g%S���-��{F&�_������:�Hb��iN��7�u���a7a�C;;Q3��m%bg���yYX�K�w��.��6��B�JD,)C�{��<�:%�_+]D9���)h�0��E�l��
0P����n���{��kN-2P��(Z�;E��l��b���3P�Nk_K}JX��@�:��.�_�.���^��w�w;��3���a'P|��K�%���<���qbd7'���kh��*P@� ��>���K�yG�r��~N���1�:���+W P������$�v����Ly�wI����f���*���mQ?7���a�"�*�?K�c��<?�\�;�<��#���Y�*�������+P�+���3�R6�]���1�,E���h��bEM�8�@�
�+��@��&fa�h����3P��G�.�{����m^�?�tQ�Q���*�(2�
7V��"���+|�<2J����C������"Wo��
�Ha�>���e�������hb���vj��������9&
.-"�XP���'/��w.���S��'��C~�s��u	�SPX�Cg
����:&��p��<\^�5�9�b(����*�+�3��xI�]q��N���D����#(������h5�sL+�@���g�h���"������u�3P�N���(�a�>E�����@�������[�b?-N�r$�Q��.��^�/
�g���Cb0�H��=Q��M���;MK���7$�K^�)���U�k�{����r���0Q�����T�M�S�51��*���n��<��m��]��
��I��)���lT����b����8�!? @5��*@�EhP���%�����<�a�Ky"����+�%(���@Q��\&�`����}c�(�@1�(&b�h����g�X�0&f�h���(�a�.E�h��b��2P�H�r�0P,'��o�.�����������bQ�4|��7'��Xdo���(�������r��b�������07Z7�O*t�|��*�H���6{(�m��e���6Z�>mP�^�G�S�E1��*�t����/����:����aIh\�z����5��r��wV&���������;��&��L���]^��}i��:i6<ys
���W�1�@Q��\&�`����}c�(�@1�(&b�h����g�X�0&f�h���(�a�.E�h��b��2P�H�r�0P,'��o�,���X��ggc��|%���N��l�c�SQ�`@������U��.R�
t���9G�
(R8���dc��<d����Q��q}]��&�����z������Fe@1�S�O����y���M@��.�M��n��+6f��X�9�-(}��q�"��U�.�S�v��i�[�p���y������W�uH�������b5�Ab��(��@�eV(Z?����Zd�X5�3P�Nw��i��@5��g�h����(�������uz�Y�� ���`�����p�`7j��u�Q�c���.�<gE E���;qP�D����������"�����xon�����3!�z�s��Z{���c��vl��(�|���,�^����a.1�8y~�	���H
�Y�?��O�(��o���W�"9��b8)��/���e����x�wuch�D$+| ��b8��|�+�@1�G���
�S��b9A,x�@���4�@1�(b�h��%M0P�N���(�a�>E�����@�������[�bNn���s��z��^<�\��8��W�ky�H�������]�����z�1�[$���)��@U����}6�+����w;n��F���7���9&`�xW���"=�p&�O�2sJ�V��I��n�!�J�/F!�����Gq�\� 7t/�5=RP�&E�XAv

���X^!��3�6�����"��]��� ����R��bT
w�(Z0P�^sj��b���@�:�(Z�u`K��n���uZ�Zb��S��W����g�?_,
�=^�g>��{����������ev�h����
�����q^���/_��
�7&��;��V�	���@UE���U9������d/�FulR��W�4_S�W�3�D��Eb��E8NHu>�g�s����[�\m��Z�X�13?�<�y%P�G���?�T�����������{����������������n��������hS��b���7�`�h�-�@�z��E�U�;E�tg�h���-1PT��}��i�k���O	k_(Z����~Z�>}�O}rI��+�zyl|2��:Z��-���b��������V��+tk���kT��z��/�����{O����9�����5���N��am��1����`@17�k�����JXhP��'nJAC�_4����|����\����(�1,][2P%��"��,�R�����~��$U�w(�R��E��a����@���h���EB�k��b9A,z�@�"�E3��:�%��jX��@�:�}-1P�)a�+E�����Oy��%�w.��5q�C;;��T=��S(^��p��R8L��1}�����R8�O��U
���yYX�#��{�sK&p�P"	[5���1�PS/)P��)��&/-����#�P7���B^�/~������+�g��;8a�0�Ae������[�g�������_��@���U�1PT���T(F��p�X�J`�X�0&f�h��!L3P!���(�(n9��	b�[�	]�����-ED�� ��tH�b�]��R�q����p�����/T�E)�k��)<=���g8_�0M�/���h����z������U
�"�m�`��\���h�����p���.�����Q���9&J.3b�(���\��e������*'��r!=�����r�B�����8t�E�����A�����U3_���t �����%/~*�|w���]E�]�A%��Q��(,�*+@
0P��>`�h���"������u�3P�N���(�a�>E�����@�������[�b?��[�=��.����A<~sm2���P���d PLM���'
����������"�Y};�U,��
�NP"(:]���oT���bz��	�[��KvV?��w�	:�|�R������,�=V�#�_�D$U�{�RqL8����2�}�;D^T��MY==��JH��7{1i�����%R��
�H�(��H�`��w4�~U+�@��G��gT*�@Q�`g�h��L0P� �U( �B
ep1���E�BX����b�0�@Q�X:��]�/(,�~������dW�4>W4���fuP��DS�@��L�!���-��M��������&CY#�5�b�`:�o�����x��k������.tl*b&V�M�S��0�r��bc���<�e&2sJs�>s[
�6r ��<���������o���b������x)�q���Qx5�w�������+�� ��q��$�y�(�?^���
0P4W_��
�E�%
k��bX�L)�@�Y�e�V"�
0P4LJU�(�����
�R�!���2� EC�iL�b?�C�aOz��?'5���"\g���!;[�N���t|�����^�����P��':���� �X���S��X��uI��~�j���1��1`�<P��>~9�����_}�#���*�R�Uy��
��_������iY8y^���8�:���]��]�WI���������8vV������OB��	p��;�@����6�`�uC��u(Z0P�^sj��b���@�:�(Z�u`K��n���uZ�Zb��S��W���m�b�'��O������C�&o���Q3��(����?(�������2�����+���~!0�*a��H�'/b��l��9�v�2w�{��^�#�k���n�<P��-��y",u����\uOOLA-~`��������//���E%��z%b��L�^�e������rg��w}9'��qx��tq/��~����OY~�V(F��q�cV��=E�5�(V�������uZ��@1P
��(Z���%�>%�}e�h��F,�{�����Q�E*,I�5�����B�Z�3�h��������4<�yrK�_R�gnK�8a0�t��H�a��l�����\�B4ano�B�V�+T�s��!��������B�Y���+s�Z�l����IF��X���c��9Y���<�g��+��Z��<�����(��
���B�m��kZ��W��XL�>E�Rq�U��b�w��L��)c�q��i�2�P��w���y����@��"��g�h���[a�X^��3P4_�`-0P��9��X�'���[��x~�
d8ry#;�^v�7��`#���qv�������#t���}i���nL=��"(�����w��:"\������r��=,Iz_]�3b��.ZXq������j����mc�:1Fx�%9(�4����F������rO��;��}�V���hDu����=X�[���L���N	�wD�&�5���"H�4�V@���dl�����E�J[����z���@1�:��c�h���,3P��9�(��k8��)d�y#�E���
����<�G~7:	][��j�����<;�vc��R��vM���1�H�b(SO��H��96�\��6��x||J��3b��>��W�<P�������D�����a17�n��9n
�=����>�Jr�:E��(�����R�������d������R�Dm�(�j�{����7�u+�@���g�h���"������u�3P�N���(�a�>E�����@�����������b�81O8Y=��d�����!�����3�p����,�mua��c��^���������CA��w(��"����s������M�6�2�����-��S���F�1���zZ-w����f!�#C����NCs�Eg�g�e�]@��/}��m�EaY���qS?����^��1i���\)��/b�T^�+54��d�h���6�R�U�>��
hP����tVa��S@��(jNg5�:TQ���
�,�@�@1U�b��B,��2P4HH�f(�LGq#�O���~v	{���d�z|'Ftq�f
/��"P<|��I�p�l�b���wb���{��h��$�H���P������r�S��l�������b��F�	#�������E Pt'�a��<�>%K�.����8���t��8z��7�
�������"�+k���7�u�
����=u���x0g�Wz���#������i�(��u�@+�@����g�*�@Q�b��3P�������E�*��@Q�R��c�h��J�1PT��q�(��K��������������y���+�::0��M���u��&�x��%�:�~J@~I�I���:
j�5/�VC���H�������L_%��%���n���^�Xq���sL5���K���T,����"�$mt5���L�3���8
�V���u�8sI~��q]��tPG���D�����1uE���	
w:�K"n�=g,�������N`�L��E�5�(V�������uZ��@1P
��(Z���%�>%�}e�h��F.��Y����=����"y�*�7�o������%�'N_���6L^U�O�4^�7M�;e�!3�2��"�=]���o�zp������l��N���2C�m9�X��(l0(z���z0{��/XW��<|}
{@<��v��K�p���b��G"n���x��j�-��W�rp��<��w��#���Z{xg�U;���~(���-��(p��a<��3l��9.\���#q�e��9?p�@�;��1~�_�"(���is���G�U1��\�#.>>			�7�-H
l),,DJJ
�n�=A:���I!{�N~�d���Is��n���(]��S��P�U���&ioJ#l����/���2��������Se����Bsm����oF����v/��s����+�H����q��B[83
]��*�����|,�n��_dN������S�%��x��Q�����/���?U��
�I�e��qh�4��� ��9&�+��@s}�����2���X�[�Cv��zu�"\��
9��q
\����Kl�v�&�z ��6�{����_^���`���"���hP���m�!��������B[��5�<�/�}�a���fl�c����W
���]�tQ�����/����:\�`XV�`XV�`X�XV Kx&��}�g�0,^�{�W�b^�rc:�\g���������9C:�^A������3�+v�T��G��S,�����5��e��Y���Sq�:�D�V����1 �v����Gg3���jw�����/oP�k��e=�F�U����L`�f~�-?�� ^�4,�}C
��C>������?X>=�5��k�%X�*Q����x��w*�M�N�:�_��Wh��Y��]�v������7��'A)�m����
�E
���'p��B�d�:s���Z�F
��E+7BO�R�S���v�+/�gU�4'������
�6�1�]CO���]�=CC*e�Iz����HO'%i��b\�b�y��y%&j�j��J��N�V�n]]�d��i��w�����{�u�#=I^`�2�A��7�b�r.f��$
��GF�q�eq""�d�4���N�J�DX ���P�YV$�V�p�.X�Z����{�G�0z�1���N6����C�����N:����x}s��D��U��H7�[V�*��[�q��<�_&���A"�����q���*���r�������qC7}_t4��>}Z2	0��9�C�����l��bt��:����>��={���[>������9�b��5�P�Nw��h���-q�@5�����i�k��($�#���5
pEkt�V�����7K
v��A7�}wn�o���+{d�����^.4��`��Q�$��.�t	_
�(����&���REx</J)v��H���������Z����C�+m���-� ��h^�6z��i�����P�w8������#F���H����EX�����_y�=w������5�^��GqX�D�>H�Q������t�N���_�����@��kX���F$�Ks})y�7��m���u��)b�X������cl��r�_���!E�5�(V�������uZ��@1P
��(Z���%�>%�}e�h��F/�����i+rq)K^8�������I���u�X���s��9s6��+�����x�rw�5��V"(�x��l����A��7F[������&���c5z=|��cb��U|�>��-J��N|�DNjK^�-��������� �x)��)?��~�/&h\����NF�;6�bn^1f����Ks��gH�6��xtl2j&�K��@Q���%#S��9.�+V�R(V*�i'(�&mH�C�c�I��I[�0�
�Xr���%2Wh��bIL?�@�t��6�@1�,�4z���<���3e�X;��[�1�=��
�=�<��,SZx���t@���N
�����
	!�8���e���B���3qto'n��e����=P<����]N,�(�t�����W8��
"A'o�+@@�R���*t�%��������1�-r�����s"�i���3!=d�����j
�����
0P�Xpn���E�
���@Q�fF�`�h���m0PT����*��E}�i��@Q�r��1P�����������@�BV!^���#g��T��"P���S�n��|���"���}|� G��^+��v��wqEr���o�
I�S��Z���F@����N<������Em�S�����	M�P<z���[�qo���;1c�8�?�9o�����cN���'�.�i�8���N�9�o��'�x��p�${�t��F]�_�f��l�J(Z�6��
�EDTi���J�*�@� !U�a��R0�(�OGU�:��Q����4Ve��Q8��(�PEu�����yw�G����z%Jy����7SqY]�H$�Z.�[~ �M�xe���l�S������b�j�"(z����j����{J�<wG��n���@��9��{%Z������1s���pG�;^�������c���I��X�������[�E��z��X|�����i+sq>C~��E�x�9,	����c�h���6�T����js[��
0P4@D�&(����
R��*�Q����tTe��C<U(�OcU���Y���NUT7c��=�Vl�Cv���o{��v�y=��*.-b�RN)Zd����/���������;��z�*��s���X	��������.$��3�s��Fu�I@����?`����<\#���nKA�Zr���r��r>���J��U��Q��<M�(�,������V��������~u��[:���d��S������z���H	�+�P�
�2�E�Ta���
�,�@�@1��b�F �N3P4I�0f(����MU�I�
D2������y0su.�^�=��R��:��%{����8_����b����f�Z������*��L�H�D��s����j�������'B�Q�(���c�LK�K@������i(�6zh�����}G��H|@1--
�����sq!�$�b;n�F����ad��jk�x@b����C������L�=���2ECdd#U��*��f�(�@Q�j��0P������*��E}����@Q�Z��e�h��j,1PT��1e(��Z+�*�����[z���;+/�R��P*rHE!�.n%59�/Y=��O^d�P�WwO^h�,�V�,
D:P,(*�������e���a\2��L�3��"��� �x�dn�����7���vM�x�~h!�z���mG����\�9*�
$�{]O'���?o��Z_s�N/���`�	���am�����NNC:�@��H*�@�
���Y-
0P����:����6E�����@Q�~jj3PT��qe(��K��eLY�����
E��i/oP<'�2�9%������3��K@E7E1T+�"���sp��\����n�m��6V\3��"]����xon�8���p�`7j�F�{�si�[p(�>r	�6�c�>(��g�q�729x%>�[�@�x6;S�C#+E�o�\����_[�O]��Y?{��#��k����]���1��u��l��`�X����j`��V1��(��P��ZT�_���~
�Z`��T)c�1P4VO��(*U��r��R�%�j��W����"�8�����$<�
�uD�����E����"�.[[8�a�	��B��[
j����������U��w��s��d����3�����z�����UV�eDv�EYds��a���y���hD��G����{1��D� ���	�������������2����[5���,������9�<�Ew��U�[]��W��7Y�oh���fL�A�����2�1!.��c\(�;Z�e����7z���,��vzL��!�c:�����V�o*a��/�8��4i-�h����[��X�jI�^O�aVK�aS��b�,���	E��w�%@BQ���PT���HB11�I(��NBQ���H(F�P�NBQ�PO$C$���PT�[�d���.l:X
�G�f};YY����������.�yK��5&y��l^���|~J.[7_:K�t��f�`����~;�n��������Xu��NH�����Z����c��t���a�����m3�yR&8�H��p8�j�WKm}�X��m���Gd�k������2��12��#{f�'Cx�1�u$M���C��	����D ��PT?&$�3�=�PLw����PT�:�'��4���PT�:�	�	��$���5����[����Kz�b��8��>l�N.	{:v�L�)��!�~bKEx}�L�����K���A(�_���X�����u�y��h��7:�����2Q��W�=&���+�s��n��m������Q�����M�Q��� R(:�N|z���[�8|J���k	�:�c�H������3������I:&t`0{(B�BBQIj'QH(&�<�Kb$@B1Fpq�FB1xq�JB1xq�JB1xQ�JB1J`�6'�(d���P����I(
�C$c��.�&��+�;��8��^G������Q��v��]G|,j���N���<rh|;n�]���x�F���"?)_Y9�Y�YK\�s�v�a�D����t1>��%����H<dS7}��+w��h�.�y0X�f�������a���l�p�P<��K�z�ae�~,R���9f;������%X�����(���,:�����P�ihh�$"@B1���!@B�%���P��hk$���	E�<kj��bMt�}FBQ��Z&�X9��P����VI(�FH���&��]
���]8tBg��4��c�O�f�.g�\�������P�Gm�hd��,:����w����Y�b��=��]#�����*�~�?���v\�-�Yl��K�=&���;[�.(��m.�=�E�5
=�g��I�uB��r��)
b�/�gi?y�\.v;��������L�H�Ba={�[?/�����#z�p�0'���'�!&�����J���P���O���|���@B�r"j�NBQ
��{!�x9y'�(�mM-�P�����H(�c[]�$�##�}�r�F�.k���_�YK����2tw�a=l��M(�8�#C"Y����,���[��k���������� /�n2��i���E(���Q������Y-��w��6V6)�@�����&�������8U�Rm����.����k3Y����� !�y�P�"m�A/�]���$?�9�\���,�*���n>�?P����"�,K�C�����(��N��PLy���H��b������b�����b�����b�����b��mNBQ�(�!�%0��P1�&H(�-�]dN��{���J����U���)��:����j����G�����7�5&��L�����xbb=X�'����7�$��r�?^��Y���T����?�%};d����+e�cd\#fos����W��7�Vy�]7���������P���x)l��#����:�,��x&�RyY�)����3���?M���t�>��~��O��H(��UT7���b�g:�"@BQ�`�PT���HB11�I(��NBQ���H(F�P�NBQ�PO$C$���PT�[�d�
6��a��b�����v_����h���g'��h����i
�:�qC�t�7�����
0�P,g!Nn_9�}�g�hi����o�jn6�3G�D���_�6����X���B](6oh�OYT���S;*.�C\�P<����o���� _x��^�x||��8@�T��!�^��&Y��_|��y��V��>LDB1���=��	��:"P+��"�	E�H
5HB�&��P���I(V�F�$����q�����	Eihkl��b�x�~(s���R�g�2G�h�=��
��h��>��Q����w<����G�zA��77��_�.��`f��SsM	�����;����Z�D3H	���#z�	�4��v���:�^���6eQ��r���9�Y��*����1�����
.�x�6,Z���r��H���K� ���'�g����Ns�u6����C`�D~��P4����;D��b��� ��~�H(�g�{$���$�q'���udO$#i�['���u�'�!j_I(��-s���?�\���#zD�����=2q��lX�`B�X]��'���P
���������@`O�TM�(������>Q��t�p�n��fM�/��{LMc]?��q����?<����l������I�k�q�J(����/}xc����F�,��q����y��F3&���0w�_�?8S/��q<�+��(z!�(�(���	E���?"'�q�aw�1@�	Ech��b�b���b������b�c���b������b�����b���U�d?��~}��?+��3��]����n��Sp�B���|s�Ty�E�|���Em����k� �)��$��j@�(}e����E8z����1�E��I��
���12�12���m��6V��L������c��2��W%��~���w��I�v9�4�������8�h��mn�`��w���Jf�s���m�lH(V3".�g�������sg������_����?���������Y�f���
oG+D@�2���&	��������,�5�KB�f>"?%�(����H(g%rK�"ik���1N��"�(�h�����'�kX��PT^��V�?����R������������/�hM{f9�����h�����Q2�P�l��X��l�>�=j��&�9����mZEU�b�G�=&�cJ�}�|S���x���~��"���s&�Ls����:�����1�i������m���&�&�w7Zf�`9���;���S4d�v������H(F;B�}� �x�����EEEX�v-�����;w������A��-��~����?>>��#�>}�������q���b��!���'h.�JH���@��"�h���H(
j�9�A	�����14AB1hv!�(b�M�P����I(
i�����w{����<�����y�6���l�.u6����x��$�1�k7���PT8�f�_�-���.|S�=�f�iB������T�=F����]�:�cB��/N��p�X0q����O7��0`uB�G����eQ�-:�V������\�5������
`��b|UQ7���'�hL.y�f�	E�D�=�H(F�2�O���7��M�����-����
�|2��_���+a���t:����w�&M���/c���HO���hiU �al���AP�7#�(���H(%`3� ��	��	�����Q6AB1J`�6'�(��fdO��>V���=�	n^?�K�[���	n^����^�����V��s�=�f�P4p�����B��:}i~/C�^�C�gb�K�*��}e�cD]����}����.V>�q��,tM�z}�4f�	E~���uKPT��*�%7+
����(fjO�?>=Z�9kJ�5��`� ;F^'����b�\9u�<H(F�=�����G��_?��n�q�x�����gOMr����Oc����������Q��(�Y�fa����<���EZ��$eP��M�5���)	EYdkn��b�|D~JBQ$M�m�P4�J��$E�4�	Ec�DoEBQ4����=��;?�a�>w~���s��0��L�ldv��{��2��M6��no)x=<�ti�m��	����x��B���iW���b�.�������w������T�=F�ub�6�}��O\��N7��u��Fy�!{Lk��N���
n:�G�:li?��"���6��Z]���T���KQ���Q���8��m��S����o$#F�O0���+Z���c5q��q��������k�_���O�3�<�C��8p�<�<�3fh��i�$@BQ L�M�P4J�f$5�	E��lFBQ�� �4��P1�&H(F	L��$�4����~/h�f2��=z�(~H�;Z��e�#s�E� ����kfa���t����A8�$
\��61�P�iO_��'��LV����LL���������$�y�>.oi9�orc�6��u���{���^����jN���I(����R��T��`�}�����w��:������|�G�_p��6v���R�������B$#`������;�q�F����3fLX���y���9SK�����j5��/[��?��\���1��-���?��h$E��=��3��	ETko��b��DmABQ������IDAT��!�/Q[�PE�x;$���%	E�4knK�d?��������������Ze��[�����I���X���O�iQ��WD��e[0�s7]S�����1�P,����>��ce�)P�2�[&n�@sI�z/��)�������^�}v����T;)
>�]?���D�'r4k���b�Af�t�1��=}�����5S�����r�EN�~^!N��oN�������}��d5_e,$eP�6U �A���S���?��=����}��?����/���_G�n������
��o��������#��,-D@�2���&	��������,�5�KB�f>"?%�(����H(g%rK�"ik���1N��"�(�h������x�G��9��>����E�h���V����'�x��VOx��U�t��^�k[z��IBQ�P�Y(27����-���K�f���R
`iO�uQq�I�sWy\����[<�sDO/�0��Q����"Xi�O�&�d_�=�A��.�u���=3
��3�Zd�R9�M�YW���K�\���E��5�B���Y^Jf���i��H(F���'p��W��

��aCVA�9�AL�:U�\���{���Oj��v�����O���i!2�P�A��6I(��G��$e���]�5��)	E�4��EB�8+�[�PI�X[$�q�	E�D�oO�d��c>,����'�o�m���uc�������Ca������zWf��P��������"r�D)��u��7z��,�6��
��B�:	�)���z��%����g�k�?����
�����d�k<���"���7e�������uy��I,�����������:�w������hg�d���sK���*�#�X����I��b��q���kW���hB����P����5k��������?������\8l��<j�e��8~�xD��J� �(����H(%%v;�bym���QR�oGB1~���@B1j��CB1~���@B1Zbb�'�(���VTL��<������Cz�O�7�K&K{�m�M������ZV��O�����THC�������5�P,����.|�U���l�
���w
�B�z�P$���������>�����^���G�uf����dp�����L�k��.��N>���Q����]�������G+�y�
�����i?�o_F�T�<�i�<y�%�:k���H(F�����1x�`M�I�.]��j��6m��_��W�g/��2x���C���n������D��{wD��J� �(����H(%%v;�bym���QR�oGB1~���@B1j��CB1~���@B1Zbb�'�(���VTL����������n���~{NJDf���O"��CW8*�fM�-}l�'
��B�5������"O{:�"���������c�D��19#�T�c$\*�j���6��C&���z�X��V���,4��'tLI���&yEE����uy�����z������
L(�e6����&'n�V^�D>�$%_���t$#�4�>� �.]��^{
<�iv�����Y���+��y���1cF��'p��I��7�x�&M���s�9���"@BQI���P4�J��$E�4�	E������b�c���bl�����b�����b��D�ABQEcm�����t��������'��6M��	�hZ?����t�O����zN���6�����v�\~�S
E�kv��i�k��M9�_S�Yi���;gi�j�����{L�G��[pY5���\��.����Y$�
�(�TH�i���M(���!���E.��Z�"����)9�����y�6��+J��Hw���E���������P�h13���r�0o�<<��C8p ^z�%pys��1��w���������{:t��v�����i��������?i�Q��
H���@��"�h���H(
j�9�A	�����14AB1hv!�(b�M�P����I(
i�U����X���o.���Xp�'z�O��*�m�t;�����w��y_�2��5��K�	EC�n�
B��+�7�����2M����:Y��MY���|�h��1b�s�v����wk�����3�$��
�,1e�32���&�����W��#��{�
���~8m��l����\��W
_���P��y�D'�7���	E�^0t�a$�(�+��(�t�;v����#5q��7l��F�i������=Qp��9m[."W�X��}�b��9����"Z�U" �	Eq,��DB�()���P��hk$���;��3����P���3�����=	E1���j����X���C'��a���`��4����a�v��>ra��R�+"3t���AN4�*%���QM��k'����w���"���=�}�<"(�U��d;o��s�D)�S�e�J�S{Ev9�_���H(�#B���K����m��aukc�c��Q/�|B�G���K<��K8Q�����<����
r�>�@B1|��I	�P�l��8�������� �+O��#y}D���E��^��m�"w�����c��x���q��w_�*���#@BQK�-�P4JJ�v$��4�	E������b�ci��b,�����b��m��b���lOBQG#����?QP�%[=�tP��v��Q�;e��1zy#�j�mx-�?,(�&���+/�5�I�;9���PL����P��v|���O*���l#��L�����1	�����
�������H���~�E�ebh���9�T?#B��&�<R��]�
��qZ��}9,�w���(�4�,�~���(��9�����qb@'��4�$�����	�jn���X�~=N�>�E#�������C�����x��g��qct��
�����)S`��C��+N���p��6HB�VDR6 �(k���P���
H(
CUC$��%lc��Pn���aTB7$�(g�����/r�:�K>�#3�Y0���n���r���L[
.'
�xu��+&���D��d���x<n�	�T��.0o�[>+�����S�V<:6Y���tRu�I���4].f2q�./�/�S+��2�)C3qm{����P���������b�u��o����:6��~������\�A�_?��
-������U:z��S�	�P���U��d�t��C�A���a�I�i!	�P����I(VF��$%��y�����6	E	P
4IB�$	��P���&I(�H��$%���YU��6���S���&+�,�:�3���a���hU����6����0�s��>���q�&u���&��d.�$U�"�>-�R���,���m��ku;3Q�L��{L2���c����b55����awM���D�f�TJ����P�����}X���i�{���cL�L����L|}�������r}W=�w��r�'��H(r
���	E3�{�$@BQ���PT���HB11�I(��NBQ���H(F�P�NBQ�PO$C$���PT�[�d��C>���l
�X$�h'z�M��o"F���%X����]��VL�>$E���T����}��b��������%���q�XJ���H�C�=F�I$q�__�b��z:���r�i�OG���>	EUCgT(����wx�w7��b��&���pM9��t�4���w�������{nt���6VR���P�����%@B����7���]�x�����4���l�_�>��������F%��PT�:�	�0
�+$��wFB1�B�
	E������b�X��IBQ:�u@B�GH��ABQ	f����N�b�f�)����e��q+ ����������?�
nd/��wh��$3��$�|���-l<P���`���;[Y]�����=���h�+U�=������}G+����3���������GBQ�8�<�o�����~d�4����n�$�4u��G��y?�z�(����'>19=�d*IeNB1��VLJ��b��qq��+((���s�h�">|\&�n��&M������I��F�j	�PT���FBQ=s�#	��p'���;	Eu�#{"�IC�:	Eu�C=�P�P�JBQo���'����<��_ ��4M�<:6G�	+����ssq�@���B�������~b&�t%��h .�&����]ZKX���L*rI��-2������J��/C[�_U�c�=��`�S<���3z�j�� n��-=�$��Q���ox���f������0�M�F������fX���X���+���m�������?j�.�P��� �1p�`P��S�N��u����������'����Z���O��a����<���8
ZMq$�0	E��y�$����:�$������b$
u�$���DB1DB�+	Eu�UN���Z��7���,����x��<X,��D5:2��h��,/��K�P��(��Tp���&H(%)v�T����/}X��~�}��$�Fxt����Uy�{����U{<X���o���5�qs��u"��r�
E~L�X��YK],�]�*����o�X��5KMa�{��'n����_g�$��[U�V������H(F����3g~��_j�M��yL�<YKq�q�F����y�����O�m��{�*PC�������P���n���:��=�P��!w���\���NB�:2r�'�(�oU��P�����H(�g�A�d��w����nt�.�f�,WI���9�x]�jd-a5�x�,�tj���;�Tp��$9�K�	E���G)�WD������g���9I#�U�c�_Q����|V�uoi�^��E�{X�VE(*�h���������k�av������D�FIU�*�<+��� ~;��+�,b5�v�!���R��PT���J��b�s���������k��?�?�0rss�[�����9s�����g���	���
PE���*����P�d�r���J��}�P�d!{���l�U�OB�j.��%�(����'��c&*�!����������_���5n\�E�����,\�:S�I+���e��~�<-_�t���'^�&��BBQ����T�~&�?�����+%}k����fkbB9�*:T}���R��YK���E����{M�v~L���
H(��h�"��O�����1������A��������8S���]Y��j����\�kjeu ��%u���T���$# �:u
������gq���Z��iM�9�i��a��]x�����#�D�M�D@
�j8G�BB1���u��XG�DB1���u�r�V�:	����}���\�U�NB�**��#�(�q������$�{�8��_;'�D�m���s�)%^�z�N��U������1��yN=r��bb�9��"���%�6z���Sm�k��v����)����\Y����j�����Nr�3���P��"��rT��<���S�_���u��X't��iS�+�"O�w{�^�'�D���x�=�p�,���b�����P��s��	\}�������5j�n&�w�g��t�����Py-EZ��j$UH(�g�{$���$�q'���udO$#i�['���u�'�!j_I(���z����~,c�����i'�iMC����q�Y������

x��"|�R�����P>x�C��!�"t�������jB�����~|���
iOm�;��]����)������T��xA��RHqZ@#���a�0��N'	E�c�P|e�������������}�� ��������~UY?qt_&p��l��h�EE��iH(F�=~��V�?q���V�^�� {D��O}����3"��U"��	E5�#{!�IC�:	Eu�#{"�IC�:	E�|�k��bud��OBQ.��Z'�X���P��8����~^S��}^�[�G6XX F����gW�������������� l����F8���-�AB11���B���]����k=a1��Q:�������M�W7���1�G*���S���q�@x�yCn�@�6ep8H(��h�"?.�6t�vn����v�*���D�fV��U_<*�$����w�Q���g-<>)��e��YPU�1lLB1h�KR �1\(�i�F{����U�:u*����	�^x!boZ%j�PT�9���4���PT�:�'��4���P�����I(VGF��$����u�UQ��	E��C=���/�c��x�WX~�����}�rX����F�c4���
%�p���Tv=;Xq;K�9ILB11���B1�f�w-eB��3�����-��P;F�H|�S����\Y��u���xq��>��[e���k�#��xH���`9�<���L��hE�����������f*�C-&~��������"_�4�45�������"�������01��GB1�&-������z��G���NBQw��XG�DB1���u��X�z"�"�����:��'�����>�m�;���h|�'9��"#�T�=������2�z�c��zvv4�W-FBQ<w#-��P��}���%���t@OA��S=;d����O{��c�:H�m�\����p�z||����Q=����&��x���<��.~��B\(jr�W�z�7t�!���u/��S/m��	wb"���9�2��O$�Z1-�CGB1�&-������z��G���NBQw��XG�DB1���u��X�z"�"�����:����?�M�b�T�N�u�x��)�����l��� .e���?.i�4���Qz�D��r���bbF9U���D���q��D��<w.�T��DPO�=&���O~�5���|xad/��,�%�"��x@����{i~|��=���
��C(��g�6I��S,����}f����������%(E(&��A�����M�@IDAT��|E���-[�[z�4��NIHB*i@B�w��_��hG9��pp���H�)$!�tB
�WRHqQ�-�?o�+���J�I����h�;�f�7��<�}����.��w�F�����'N�F������k��{������?\�8�`�R���x��g���<y2�;�q���I�&�����C�������@ii)�n�b��p�n�-�R����/--
�����p��8~�8JJJ��������
���
x�^x<X,�l������
)���j��"G��B���j�R��rz=�{�~�����n���bH<{���_���2�=�tT�N����^�*�Wk�X�Y�)�R�^g�����HOK�����<Y�'>+��H=7��x�:7�@�F|�~'�u��_|�H��������.���������}^���'
�-������{���e<�1�=c9���=��/��~P�g�}tX�\��e^��_�,T�Bk]��1�{����jm��;�u����u�
���U��r�����Ta�w�#S��I*��rGJz��FT���+�c��d�E�-'''�c��is�1(��@�B=�x���\��1c6l��`������hQ���������@�
�_�]�t����7��G}4�6\�`XV�`XV�`XV ��.`�vf�����24�Y�{��f���`���Q�V�H����(�T��S����hQ�b�U=����*p�0{M*6�UW����uN�\������ZB(��7`��4<nQ��m/�E��`@[��$�����)x{A
\�w_����=K��y,	�u�..���|$�;�������.)B��H��������__�CY�
�
�]�~S��vG�I^'O���7`�`E5���=�O�`Eys�������=��0w�=��7�u�{�=�)d�~�P4G�PV��/��J%��i��P4^����=T�M������W^��A#*C���_���Y)�2e�q&�����������[���>;��[��F��a�P����^=I�B�pS)�/W"���9��'�!Kx+�����s����_���Bx��R{=�.0�[*�4�*����)s6�D���C�<M��������Ta�e���A,
��{�{;�W�y��X�Q�G����}�q�.������&����:���?���n���k��]cn�
�Q��s�Q�d.\�K6�	>����@r
4��5W�V���|(a�����.�������r���e����C����(@�e(�:��L�N��Q���k<++���r:�^@���m����t=��3=$����z��I���9u��N�r����\�S��E���C)��i����xfjNTxO=te6�n,Bi��~D�4�����0{{�����q~�J+������s
�W�v�h��v*@�s��Sh����['vuoi�l/��,D�S�R����q���L�xM���*����)cF7m�_���D�z���������v�����cd�m���~S@.�f���g��a��x� �A�d`TO��pO�������Nl�#���B���k��^v�\������6mR���s��Uk�������S�'�{S����e�(_s���b|tg�(Ow�����������(��Z�������W�����b��#%x��Bl��.L�_3�����������B�=�
��[^)�z��oQX�w�]c���e:����j���=ERq����h�v+��ga0�S��Y���z��1��/^��gN�o)���B����1�����q��X����N�Z�F^y^�6g�aB?�Y,��&H���,�k_8�8U�mKO��g�u�4��!�)��8xQ+�@�O:Z�[�b���o������6��8
0P�?�kN=2P������@Q���=1P�WC�6EyZk=1P�����@Q���Z�?|R��[���u"Ncy�9W���l{����2����\��jdY���Yb��Z-�+E�LR7~�@�x���wc�b������<qm��qfQ�I\t�{�������~��<l�[��JetoF	O��2EU�������=�����L���:�D^���H=)��
��X����s*{iX�s,x���a�Q1�d��7A���
0P��6����C�����	�E�S�@Q���#����@Q���i��E5�m3P����EM	�������<g)nt���.���l��{'d+�Ac	�7��NO�~��E�b+5��<M�;�n��u�JjJ��;P,��a��"<?�P��U=�H�\���M��N8^�S.�1Jp���Oa�Q@��g0���Z�"�_!�8�S,@����������p�������v�G11���[	f/J�! 
M��E�� ���0P�����a
0P���������
0P�?5�kN=2P������@Q���=1P�WC�6EyZk=1P�����@Q���Z�'���|<�i�G�O{��\��O�XT?%��*���j�I�uq���nN���t��"� ����")���'<�r8��"���,�&N��#������C%x~z>�P�bM�
}�`;v����������)�HV^����?����!]x����^�R*z���iO&/r���j�r�-���D�D��AT���bA�m�)�@�o�(����	�E�S�@Q���#����@Q���i��E5�m3P����EM	������~���<��� ��������T���!YJ�O�/�?>����~��9p^�d�8�3��P<^P�yk]�|����nR��/�A�l��>^���\arz]���w����Pi�0�����Y�LA�^b��W���"/�VM�0V�bN�]�;n�����W����\��-���1P�����Q
0P�S�������
0P�?5�kN=2P������@Q���=1P�WC�6EyZk=1P�����@Q���\�?t���f�<�����!�l2��I����2�p�/o��LP:����A�FiH�T��}RI�8�b�{�e_1��_I�G���<�`M�~=V�h��x�c>��1���B�]�A�K
k���c��+�Z�C1>�+P�<�o
���G���9���kS�����*z�w�b�7>�N
QN�o�j���7�@�|�g��(����$U�����1P��7V������|��G������<�(����'��j��f�(Ok�'��r_(��;�����{��b���N��.���]xRU���`.�?q��ExeV�od
k	�
���XtM���*��bA$�=�"y����uH�$/y;
�aG�2K<�12�Sf_/���1�}�1/�������V{(����b�����O��u�R�L�!�)Tq��(�:\��+\X�I
�M���m���G���7?$o2P�,8wg��$e��'o&��O
E��S���;Ey�3P���O�����@Q��ZO5%��2P��w<������x��������v��,4��<@�D�3�����
0��m:���0"�'ERA~9�"�z��+�'�0sy�5yV�T�)>[
t�Y�y��y�2���������jtL\6����l��[(����b���A���b�-�����=�Z1����[�z���z�Gy�G{@���R��a�����#E?1x3)`��7m�@�C�HM�����l,Y���2o��)�@�8-�Zb��W)c�1P4VO��(�U*�zc�0�Q-�6c�0R#U�����Q��x.���a�����*B3f��G����u�����G;����^��e~�]�YB�u�!����������(�g���>�������^��vM��J�Q�{���KNoy�R���S8vJ����s���dS�+s�S9�P��X�"��r�x0e�GN�s��Q*F�������GQD�Vr�N^�����5-�glZ6�/�d�X�*����E���~�#����-Vqa�P�������@1�>fe�h����2P���G(��~[�kedM�F���E}:]��������~���U�f���<�B%�O�O@��M�A$��8�=Z�GD�:Z�����f�S�tdX�EM)���P���Gp���U�=�t�
C�����0�U�y��u�2��v�OV�S����v�����=[g(a0P�9}7�<���/���Z�%����I�"�Yr�^�Vz��[G+���s�~��"EYJs?f)�@�OY����"33����M�������o�5Y�`��XUe�h���a��`Ug�h��:�0P�!�	U(� ��u�dp���E�BP-�����b�SS���/��5C�!#�w��m��bo6�*�����"[F
��.G�3K�%H�)��V��?]�"�J!�?Y����aO�7����XV��=F�y��g�������pZ�P��9��0he�D�~����3�����Q�|��;��\)�7�&�!�3��`1�/s��mj��L[
��O��C����e��b\d�N
T������@����Q���Q�dC������|��G������<�(����'��j��f�(Ok�'��r_(��;�����J�6�NzH��9��z���O���Q�.�7�=�p������wB6je?E�\R7N'�HaO7�-��4&p��=����������m��c�i$����5��T��K��+���(���@1>SeP����~S��~,����o�VV\�����K�x0u����^�ukX0��
�w�o�D�e�����W�`���%E?1x3a`�(j(���zd��(�����<��{b�����m����zb��)!����<�����**�����M�k'`�
9�T�U�������N,�Z�@�+:�-�A+�)c���	(RH������<_�=Rw�@;w�aO�o#g!��#�%l=�Y6�,A��TF�������_C�O���%#�"����.|���C��!m�5P�(�k'?�b������%<����4��Ff�Y=y^��f��b0ex�(�@�o�(����	�E�S�@Q���#����@Q���i��E5�m3P����EM	������~Z�*r�=�a���kf[���Yh�����H��C�K������"O��9���
���`�3��P$�=�ex��,��[���<�.P��f�L��c������T���'pP�&���"D��N���e�H�~��[���ENl�[�t��i��]���b&��T�Q�~�|&��]��MN��Ss��~��{�D:G�F�4�����g��'o&��O
E��S���;Ey�3P���O�����@Q��ZO5%��2P��w�������R���)~��S��{�e�k�t���^B��}��O��p	���G���O]��xo�
)�@Q��F�<��"y��Q��f�>_5�, ���e:R-���}�1�����2q��a0���I_�D�<���B������3KF�S�R�-X��"�b_�����2��������io1�~����j�D��;�����ft�M�K�
L�~�@�O�LX(����5�(�Gw��tg�(Ok��(��!o���<���(jJ�}e�(O�DX�wyJ���N���
����w����:�.�F�<�0[���M��Q��H����;M	�j(F��quO7��@(W�}���U|��LaOmR>_�p�1�
��%�x����%x��|��c��#3��Y�o`}RH�0
(������:
��(�o���;pVC��s�v��V��X��q�?�����C��@'�@1�*�/�`��7[G���7����<y223���!�&+��/��5�(�Gw��tg�(Ok��(��!o���<���(jJ�}e�(O�DX����������������ptO����`�qB���|W�/q+U���}�4�;>'d�S��@1����?�����s3��z[	�����{���������"�1���Z,�Mnt��\�y<��4\s��U�#����Q@�F?��W������I].�e����]oS;��j��*m�L��g��:����@Q�����E��e���Y
0P4K��v(���#�T7�m���1�E��g���>����@�hE��c�^#3j0P4C��6a�� ��5n|����H%^�U
�����8y�+����(��(��;��#l�V��55{��
m"�����[����s[���!\i
��D��pq7A^���7"�]Iy����1�<;�����*#��������)B��y�������j���h���'��</>\���?)����D�mDv��7��7(�,0�7]��K���*�@�X=�Xc��G%��0P4^S=(�Q��:��1R+#U�����1+#Q�����2��DX��P~[���O|����Zp��Ltj�.m5�V��),��_����%T+�����1��"r?���Hu(�
���
�������	�����4������i37�p"�c�_i��H^b��<?�)Ai�4��k��bkg�S^(jJ�}5(�*0O<��hc��� b��V�9*;���Qg�N�����[��P�f�C����~�����Q��v���x)���Q*�@1J�bh�@1�bh�@1�bh�@1�"l�@1B���@� !#4�@1B���@��0�@1
��l������@��������Q�4u�%Y��&<����cjFt��b<5%�ro!�-��\5�R`	�F�@1&��n|�E�i�6�'�t���]:.�MaO�
_������?�G:=e�����-O�?:�[F8���82*�0��L��@����%��r���<�������R����.����{�y�T��k���8@�����J�I5]<XV�C1�8�.�d��(�����<��{b�����m����zb��)!����<�i���o���#�>���:p�9��Y�X.O��=��J��&�F�jR��&u,x�����e��K&�+��@q�z>��
��I�A-.�@���l^�D��~AI2X*`8�W��{���G
A�����Qxq��G+5%��
�l�`�rv��>�B�W
�}a��(�������������wme��C2��f�7�\����@��&�'�`��\���e(��`��E���;Ey�3P���O�����@Q��ZO5%��2P��w"-��<;+��<��8���R~0y�����	/f�ta��R����jk��#�C7,?�@Q�L�W:����S^<�I�/D/1�	�mu���0��t�1���d�����G���$��c���-��[5�����JrH{c4P�~�X	9��65Go�����>]x)f������7N����mM��j�&�\�h�(F$WN@(&����X�P
p��P��s���9����@1�B�g�h����2P����(��q�(R��}��7�u���1~"-������._�����py��Qy��x"�H��,p�'��
-�^���a=�y�0P�\s#Z��@��{fj���{jaO)��yaO�c�5.O)�Y����:}�wln�uC8�n��c���H���@��]�)KD��Un�y�k��/�E��_�+~�`��.�uH��$x=��
#t~��l�E�f��+�@�t��V�X(��k��d|��k��"E=*S���1:Fj��b��S���1:Fb��b$jW���qZ���H��v���s�9��������*qr6iz����+�
q�@k����	Yh�X�J/EMI���;P���%�(�E>5�i�����@���}��#�j3�7
���B'��S=���]30F���_�rJ����%��"���B�0����1�T����[�gV�J�d�z�N��YW��j�g���q}l�������qU��@��"�>�`��l3��=�`�(�`�(_s���b|tg�(Ow�����������(��Z�������W���N�����^���</_�L��7
u`P';R�r��S'pO~��-�6�b�W)����7����o�kk���(�=Z��f���Q����0�<�EXC3J"�c�8?6)��s��e��M}^9X�;g �Q���@Q��T��h�H=������]�Y�)X'���"�����y�We�=%�!�4++���:(�O{���2Q7�2�o��������E�5�XC`�h����1P�%���(.�.�u�dH%�����KfH������eXe��I�P"-�{K������0k^�1B��6�����y�3���</��u��^5��j/B�=pY���VM���Ow�X,`�����v{	��U���Ux9��^���!d��P"�c"xU>*�9����S,j�O����e:(�a�����m3���_�1c��7� �����g[�#�������+��*��DinKO���J������Z4��l�@�H5�V<`���OV (� ^�M(F)\��(�(`��(F)\�(F!�M( b&(F!Z�M(�(`��(F)\�m������g��H�;�cTO{�<aQ��aMv.��e�����N�zE�J[�t�����N����c�T8uf�T�G�nZ��D��{E�o���}����{
��<�*��:-���R�0P4N�`P�P��V������
Mu�F�xxR.��Q�D��8pL����`�������"�=��*��E��2<V@�u
e`5���)��e`U����0�t���I��1�@1�@&f�h��:L2P�!�AUm��X<�����Bu1�C�4��cG����q�f(�#�3�U��V�E��@��M�q���2�"E����xg^!�P���Xx ]����5�$�=���3�=\�vg��Z�����|���h\'
Ug���O&�fE�������w.������w^��������T���`��"_.��-�"����4��H��_�������
0PL�Y�1��
0P�?��kN=2P������@Q���=1P�WC�6EyZk=1P�����@Q������f�o~��yO5�e����i�!O�=��],����sQ�V�(i��N��bq_oa��W)c�1P\�R�.B��V
�J��(N�����_�zg&��1z��(������N@�E.���i�&��f�~��9�(�d��aP����)�]�qP} 7��1}l��x�A�����|l�U�?�����������5����bQxWR)�@1����
�_�kN=2P������@Q���=1P�WC�6EyZk=1P�����@Q���������$���Q~�I�����TKU_y:i=�iq�����b�`1��U�4<4)�Z.3�M�W��T1EU�����zmE��f
R1Z�=���xp�h���2c{�-���9������=20�<;jfU�<5����w)Q��.�Q��(�����F�Gq��b�2��U��]�ls�M	;�h�iv(����7�`�h��l�0U����8������������b@YL��@�Y�e�V"S*0P4E��F(�����M����D[�/���������x���)�����[��_����K0{��C��g��V�>2��]��gN�������=EJ�m�J�YJ�tL�	��A��c�s�E���'�xyV��{�V����2�i�~Od���$��,�Hy��q�S��
=�rF�T<.rh�3��,g=����������,����&<h�8��5%�5Y`���3��>m`�(�(���zd��(�����<��{b�����m����zb��)!����<�q���/�rK�5c����DxO�Y��p��*�yo�Xpua��b�i�#E���D�H
�H�2�.EU�<F��o�lsEh�m��nH&��V�z�e����lK^�{��(Y�*T�����DN�t��y�@Q�U�eP�<�����w�.D�K�(���.��Y
��k��WtO(����{y��2)_c�z�m1P�N7n�8
0PL������`��K&C+1P4TN��(�����
�3�1�!�1� E��
i��bHyL9�@�Y�e�V"�*$�b��N�Y���|�K�}�4��cG�f���w�����������:�:��t��ZF*��b�3[;��MaO�����5aO�s������
����x����Dxlo9 ���yJ�e!A��o�A������Z��@�� ���i�?
���"���j(R�-��1���d	%�����p������<:��^j���Y�zB�G$�(F��MD(&����X�
0P!�I�(�$l��d�a�&	�,��H��@Q���`�@�w1P4Y� �(�������z�������U�F�-����l&(��$-��]���]���"��X���9{u1P����5(V��ng�
o��{�P��wN�3a1�$�=�B���rzJ�b��}��
�a-�2��{�2P�I%u�L������(Bm/\����
���U�26��s��k1��V��'��]����1��]�/6�C
1P4TN6(�At���E���][���k+��*]{���M+���{��k����[���mk��*y�D\��<�/�(��C�7�=#E�q�cTO��=r"?��Z�,,��.����E�6g���I�/�2P�nbm�@�B����hQ!��X�x����9-��mD(��Q%�1F���v��{��y�D^;�tke�����EM)��fE���p���
�}V������j�Uz���W������}�J��������2�cY1n�
���M�q��;f�S��bt�����b,�E���b������b,�E���bdzU���QJFf��bdzQ���*Fn��b��E�"��G|bJ6�*���~n.����f��T3�������"��L����}:n��)0P�X2C0P�,���N��Oy�����O�D��d$DH�{Le��!�p�'����'��C#���q"�]f�{!�����@Q�Q������B��s��S��U�hV/M<�P�\�/�����A�O�����Q"7p����]lF(S��'��e�$��T��E����M�����)-HKKCff�������r��v`�����@vv��J����F����"z�������l���R�zj��j����q��v�]zz�<tN�C��Jc�B��rnVk�����P4&�����@�T=W#�3P4B��l0P�L/�j3P4J���0P�L�Xj3P�E���2P�^�XZ2P�E���2P�N�X[1P�UA��u���9X�Y��Z�x�����:pF��C�?��j����D��_��XQ��K����n���b��\D���be�����27���=%��A�aO
pzR:K�{Le%�����x��B_�<��#8��
���T1��@�F���b��M���������������J���wN��1��!���qQWrD(�D-ufx\z`��W���A@�#��o��{����k���\��j�
#G���I���ys�i������1g�|�������@v�k���������
�
B�5���I?�v���Y�fa����m��������{��k�E�>}`��Em	�l����9������1�y��<x0.��rt��]~Z_Z��+W��O>��E��o�>�l�]t����;�*T$x�x�b|��X�|98�h��];�=Z��E�R�"E����@Q��U{a�XU9�(���za�(Ok��(��!o���<���(jJ�}e�(O�D]��!<������)5�Z��i#��vi��W�#����D�97N��cjR77_��vg~�6��(�R��c+k{���/uaAyn6����Y��	�avk``U�B�w�z�	?�������(�����<HiD�_�#�Q���x~(�g����Nx�����U�(��	���s���
��j���/�����a��P����w[��JxU}V��b�(_s��X(�g�[;t��|�I����A����#�<��>
����/x�����+�m��C��6l���n�:<��3����}��7�>����k/G�����A����{mW�W�d��K/����������u��J��7]�t�?��O6L���N�<w�u�;Vi����"��������W��I�0����z�����5�@1�4�`�h���2P�%���(.iX��JdJ����h�.�����|���#j4��uRE�5��lxf�,��li��Pt�<8Z7I���f#��E�g,�}��u�������J�@�
9���1�>Q�1��H�w%�2��U��>-�
���������X0R�>��n�
��X��o�u��+[x�rk.����Lq�*���n5�)}�M����l�E�es�`�(]������N������S�	����9�����_��w������G��}��J�R�w�}���7a�\��h��1����g�}ViK�R�~��}/EZH}�������j����q�e�)^�������c���h����5k���?`hld�M�6����1t�P%4���K������~�Az��>���F�Rl���
7�����+�Y���k���;
h����/K�R�'�j���;v�P�o��f�������>���Gq��w���6�K�����E��S���;Ey�3P���O�����@Q��ZO5%��2P��w�.��=V���)��}%��1��Q��'�_O�OzPtb��"eo�7���w_��D����k���.���@����(7y���_������C��c�c>k�z���D���w�b�&���$��j[��������%��b|��l�X*�U7�U=	�<�t��	���Bx��Q�����ag	�E�S*�w����64���z��@Q�J\'�`����#yl[�l����g����;|�)*��@!F�z�)ed��G������/b��) ���c�)����~���+��R	J�h�^�z��%���� 	Pt�vbt���3f������)0�r1.[�L��yyy���{1n�8%�(y3R^D�Z�����������������\<���0`���������+^�5k�T�d��=�qP8����:tP�%���B�&4:�7�xC���I����@�Lu�f�X��2P4[���(�����P5�M��52�E3T
m��bh}�:�@�,e��M��~Oq�����?�=�k�9?3h�0_E6~����q�:��Y������G](�0I:L2P�.�R�������P���F�������V���D��Dz��S8�9?��������#�C�(��)�?��"���s�rj:}��z�r����.�#-d�H<Gp�N�xy(o�q�����L[�6#C,�(���M(&�,$���#0G!E�>��j##�Gy
	������-����|��'�������y�����
��p�����(g"y'��<�/�����h�.	�=���h����IH�Qn����/�'����i^�~��iLT��O%J���&j��QN���~Z�j�����U�4��^{
��_q����n��Z3����M�y\�:U�,�T7�m��u1{/E�l��b`]���@�U��d�^#3j0P4C��6(������R���D]�Z��yX�c��F�s���0l4������.�X����j�)
�:��}�eTU��:D2�
����W���n|����S�Z�1*�G��j�z��:�D{��H	�,qb�V�!���{�0���!�0P������4z���x�j2�>����B��,��xK�<�O|����S���@��"�]��,�����@�U��L(�T;���?~��G�C�[�n�P����/�+��B�n�����z�`�6�;v�o�l�X�B�L���Q�3���G�K6(�(y�j��R;��F!KG����;�����Yg�������!�����-�'%�?���7���I�0{�l�+�����]��~��W���[
(%(����Z��%K�(y)�jVVV�v��oW`��H��f�f��6���������
��@1�.f�e�h���m2P��5(��jh�C�c�Q�f)[�n"/��Z��Wb���I��}F���+�����=����nj9��Xn�����	�@���
f��bue�������.�<��,�v�`X&�uTo��D��Dx*R�o�_,����$���[Fd�W�tXS���R��������b�6^�]�G1Wx�?ym���
��d��"�0��NL_�F���G��V\%�[5��a�*��������A�
0P�,x�wG�		��7�/%�F��H�G�v��>����v�P�}Q�����6yR��c�*���G��PH�}���S�NJ�y���]�v
��~���7���oG�.���#���yH�B��$�E��v����)$�yRR�T:O:�]�v)p3h�����o�
��I�,�T7�m��u1{/E�l��b`]���@�U��d�^#3j0P4C��6(������R���D^�_���/uaW9���a#��������~V��)t����N%$$��]���w��Rr�E��hT��
���9Kg�r����7���B��R��y��v��"�<��N��
[z
��I�T���c�h���/(�G��C%x��|��=���������������FM�O���[���tTj�a�f`x;��7�/|�xxa`�V"��)@7<
����o*��r,RX��_]��8h� %�bUPG�	�W"y�Q�Ez���^P��X�������R�3�<t($+�����
�~����H����O���>����W�)L+q�6m�_|�.�ii��������x��W+�T)�+-�h�'N�P��i�F���'-S�D
K�!=�,�T7�m��u1{/E�l��b`]���@�U��d�^#3j0P4C��6(������R���D^��-B����?�RC�e�S@y�]���g�o��#��X����9f�R��c:���G��#EM	���M`a�F7>���@�R'���]���u+���|o"�c��:�G�sl�V^�U���B!-_��2���X
V(S���2�"��<}iVA�<��qa(\��R*��)o���<������7��^gg ���z�6�E��d;�R��b��O�~�^/�O��� l����%��W/�����_�=���a��a��i���*����+P���=Z��)l���?/b\W�!�H�����x�^�Z����l��|�U��g���k�P�����c���[�V�&�<$��?d��%����f���c���A��`(����H��~X	�J�y��w"�]�������f����9�wh�&Mt�#X{�m������+@�����w8b�R��H���=�����}�(@���snn.�n��A�����}�z'hC>��9iO$Qg.r8z���{�"RT}�K�N�^�7*=���_�������1��N������������J���SVZ�a7=��"���g`���Y�t����@��1
{��k����_�"l[���4i�_Ho���n�t?��:�v��Pu4�~/m�J�,�!��:
G���uv�rqWq�������&�=&������������������24�Y�?�P�5����C���P*L��������O��y,X�s��F�fe���Z��n�:N�B��<j���*�K23Jp��"���p��a]N����R�N�j��rFQ�K����>����V2(�@1f)�c�Q_�5��������r	P����1|�p%�b�/ 
(n���}�F��?��Ox��q���*@����@���V�\��R?~�(^w�u�nz4^��={�T`$�F��E
�J@�*��:���.�L9?��(���/h��e5�HP����O>�x[����u�]�����.���E�"m��YV�`XV�`XV�`"T���~��6��AQ�
�Z�ubH����(��Z��W���{r��R^�p��Y'���;z���H0��a��\l:����b)�5������>�S\��I����T��;FW��@IDAT���('�f)C��I�'��|�*�_}��:0kC=��l[	&t;�zY�b���;���8�w�`����z�j;q��~��%������`�s�������D|
U`�XE~[Y�l���W�=�y�M7)���ID������<
����<��w/>��#���o������R�P�4
�������c�����+(��K/)!F�z�����3�Y�f��c�rR.�B���5K��X|��P���)�g�<���l���?���x�
>	vP$oK��H�5���������CQ�������\��CQ������(Os��=��������^�w<�NeEy�SO���P4_�D�Z���mN�oy�*�uJ0�S��2��^��1��T����b�:��gx1�g	j:��G�E����Q
e3���=���a����*Mxq��282�p�P'��X��XJ�{Lu%��g��|�!
[�1�����KpA����c���RA�����H!p������6_E��^����M�t�Q���o/H���T�d��sJ��U1r��{��"n���D��4
0PL���;P�y��F����V<�{�18�Z��������{�p�|���Xu�P ^^^�}�]%����?��8f���~�/��m��}J�D��_~�%��m�[n�����>���l�)4�-}$/Hz��B�R��SFj;r��j��


�����;���!C0s�L�x�u���;wb����vU�I���
���?�O=��6S^9��)��4J?l)�-�5h� d]>h��C�8-#��9#Q+���}E9z	���[76c�Z��CQ�T�V�������������O)��Q�s(���z!��a���:$\��U?{0m�����a-��k��nv)"�,�����X�U
5�&B�����/���ph��C1�*����9��srr��)7��g[����"�1��O����Rp��v�d�5U�������H�GF����D>K'�V�{���|q&z��v�
�P��9�e�P���(������(��g�E]m��>�WP��y��{y���T�2�4.]Z��<��}�C��{��M���;P����a
0P4L���!zR�������������3q��IJ>��gJv���?P�F
����
�Z�<���*��9=�������+�)_�?��O%$�;������c������")�(y���k����������B���S���_|���_}���1c��y9��/����V�%)�)y^d�\�,P<+���UkK�	�R��o�]�������@�UC�d�Z��2P4K��v(������TS�-���2�&E#��g���>����@�hE��K��������w.��Ez��>�S�>_����:�e��F�u�������g���4�����;V�i�;�d��y��H������K��@�!�����H����v�m��-� C�S�=t����,�YW�X5���1��L�X�.��K��beE~�n����|��N{���2��^������J��s��n������q�`�'��[�`�h���C������
������$���������������g|�A\~���!�+�9����@���1{�lP��u����`���V
#J������G�F�����+P� �_��%��;
�J ����Sr;>����a�|����H����U+�fJHS��$�L:N������<������~����H���_1a��Jv�~�@�hE��c�^#3j0P4C��6(�����R22;#�����RR����2�&E#�m+������`A!nPC��
�q��V�1*;j����T>�p�3W��������~*F������B�-U~�@����1P�t��K7{���N�>G������rQ���Z"'��~�	����E%e����w�U�A������<�(��3�Q&P��a��"<�y�->�w��B��i"<q��)y8N_���U���
���^nx��(\�W��5�=�����/SGK!F:�w�yG}g�u�x�	%7��<,��W^yE� �P��mX�NP��!r���\�d	(o�u�]��
b����}r��H���%�e�E���w+ q�����#���\��y�:��<
���\z���~���'�=��M���
St#�K�qH��(\����
���j����iH9 	 R�TI�yH}�h�B�2)�yrR�:��o���6z�!�����b�h���m3P���{(��p`��b�^�f��&���Q�������@1�>fe�h����&�b?A��b��"*�vM�p��,�>���E���{p�P��S+.�oG���=������baL��@1����m��b�[�S<Y�Btjq�(5�f4��Z�G��3w�[x����)�r�&ix��\]�a��K&�+�����z,�w�q
E���tBw	���U���������8��J��Nh��"dj�]<��$��b�L3��Js��?~	��#�F!I;v���@j����[>��3d���Kp��W*�p���
p�3g�?��C���W�z	��� :
-J����m���o����F��M1o�<P�S��t����[1e�4k�'NTr2Rn�U�V)���Y�=z(����m8v�X,Z�H	�J�B�H�}4�_~�E	�Jy	,l�v�z���-[��O�R^E��Hy��	,R�S����l��2lE���m���n���@�P9uc��[��+2P�Y��0P�J��1P�Y��
0P�X2C0P4DF]F�a���5.�Z����*�h� W�����y	��D,��43_���-g+�;�����������b8��9�@1����(a~�����O�t�pa��8?U� �1��{��`�J�{e�3R��]:�8,K��(����J2�"
�UT�G>����^�7��>j�:9���(��_K����>I���O���M�1�6\�0(��'�~��
�<o��,[�LW�>����R�����
8�p��#��:��P�w�}����!C	��w#�6�?L��K
�J�Q�t��s�=����+��~�Q!�Cz�[�VB�>\���7m�4�-��B.P*�MI^�={�T�(�;��P�T��<p������<"��k������;@����@�l���g�X]{(�P�z�kb��f)�.����u���Y���@1�6fa�h���m'�b���L[������W���`��6�<P������^���l���K�Y�������P.|�kdF
��U��l����o~��U�����ks��fj�p��F��p��:�x��������]�}''3���aTO}y[(�g�dE
�����8[<lS�.����w:i�-����5�"rt�}�)\�?����X��d��@Q����
0P4C�$�I �<�h�SO��� �B�R)/����o>�C�v���7��W_� +���I;w�T���_~�x�!���kW���	V-�t���JHR��H��q���$y-�a�B�I����El&<����+������|���Ia\	$RF
�:b���2P;��1P4Z���(�����P5�M��52�E�������2�6E���o���~����@�H5C�J������1u�K���!���C:��0���O�-ra�au����c6��M���d2P}]�u��bxe)����%xdr>�.j����8�u:����DL�{�v����|��|���c��ur-�q�������@1>�((�x����b%���V������Vem7��Oz���Z^b�s^{+n��9��>������@Q����
0P4CU��
��E�
b��baL��@�d���g�Dv3P4AT&(���*M5�I�a2�0E��
`6�O9��l�K��(g�*�<)������
g,wb���R��5����l��"=����b��^F�f��O�#��xg^!V��F��V�����d��z2�c�;^��Y��\��y[���o�f�Q�����@1�*���
)��G|<���	��k���������;�p���.��#�n���
X�h�-=�������i�2��;w�D���X�U��b�N���`������y����@1�:�c�h��U-3P�������\��U1�=E�5��@���/�K����e.���F��F�e�T�e\���e�W�P�'�<j�}�����QG��~�q1P��y�(���Px&~���w��{J�O�<kt�G����O�k����\�XxFk�r�>qm.���Tg��)'�5@�������uo�/�)��.����Q�{�W���ExzJJ*����M��s��T��kL���{c������P��br����)�@�'��
������JrH{�@Q��J��'N(O$��[W^��yO�s0P��;E��S���������w��bn=���6�c�
9����0��*J����-{K x�RF���e�2
��`���S���>�"���c^��n(W����D�V"�i�����p��������y1k�_��zc��Y�i��8�����0P4�� (jc���B|)�w��/E�����qv�V��z��7z0y���]S���_��"��4L��@�m0PL�	��D���%��@|`�(_��5�(�Gw��tgEyZ���@�_
y��i���@QSB�+Eyz'�b��L@q��E��9��m�����3�6�m|uv!���O�v�`l������we?���}C�c�!���%�N���Y���"��]30�<;��V�~
f9Y�1��/s��_�1]xc���jN��3p�����@Q�T�V�P\����f"��������������6������.|�S�r�>���G|����!R
�`c
��IW���t��CV 6(��_4�(F�Z�m(��a4(F�Ztm(F�[��(��`t�(F�[,�(��^�m(F�]�-�e��Xh����e����L{
��O�MeEz���/�����.9�zD6�o�8�����/��2X��*�Hz�@Q��.O)��s����7�3��QYh���;�i��c�+c^��MN�g4�:��N\�M�����P��������p����" �U�;p�9��W�$�I�F}sn!�U�'����f�s�O��!uCi �E��sF+�@�hE�+`�M8�y�D������t�@1�(&�b�h��a�2P#�I�(�$l�C�c�!�&�[�t�,��((�L
���n����T�3���D����z����/TB�i^�[[1Fxf�i\=�\HCA2P"���(�����
���wO��������Y�)�������L�{�~e���h�����C�U�v�vH&��H��)E�RZ1^@Q|L���<l�]�O|a��<����*��R���������z��<sc.�
pm������0�@Q�H\%�`������c�+�@��&f�a�h����3P���{(��p�}�Z��b�(S���(Vh!k���,�+��@��f�K���bo�Z����(V�+pF�T<4)52��_��%�{|�|���<�����.^�������0�E�����)��8;y}�D/�����Q����B��c�+cNM
XI�������|x-���1�hXS��42���O8���4�O�b�j�/�i�fV��kC�� ��|/��u��K}(�<��O����B���;�FFg�h��lO�e+���1*�@1F�h�@1
�h�@��0�@1
��l�@1J�bl�@1F�l�@1J�bh�@1�bh�@1�"l�L�����Q���S��N��1:m��5�IG����-��H^Y��cX;(D����*Fn��bd��W���N%��	r]a&����K�{Ld�[�]T���:Tt+���N��V�ivD��(;/z��(��Y���)���XK��4���m�g@�9)��������!������WY�(�R��1K�f)�vY�`�h��!�2P!���(�(n�C�c�!���E�B\������0�@Q�H&Ta�h��AL&�b��]|���m���b�YL`����"C��?�)�k",���*���-�v�U�����}[��i��w)�#���t��P�7^�@�6�@W2�c"S����Oz��hC�b�B�����;FeG����2�r<��	�����a�x�<���p|?��$�)y���f�����_���kY"��C3�W�OL��@1Yg���)�@QS�_Y�$Q�����b�(_s���b|tg�(Ow�����������(��Z�������W���N���]���<�K7�v����.��|c=,f�ra��c�'i��=3M����s���q���X��=��t+t�<|�$v.E�������]_��d��D�����(���]X��z�!�8��t��Dd�7����^k������
;J�)V������������}7����.ha������\��;t�^d�c�(Sm��(��*�dLT�����1�@1�0&�f�h��A�3P"�	�(� ��u�dB�&��$�0�t���I�0�L����KEE���P(��-��oB�/�[�S�x�K���jk1(!�������M��El+X���1w?����`A�^S��L�9#
�:���������:��Z��G<����j����,��<;���g4Ec�#R+��4���w*yOT<3��
][d��_����9�<�i�wg�&ixxR.(�b���:s<nM����
$��OE��S���;Ey�3P���O�����@Q��ZO5%��2P��w2-�S>��xw��rO���-x��\d��Y-��	o�S������5��
C����iL4��]��=1P�WC�����x~z>N��=���k�8�O�K���+�L���_s�f�t��	���\���j���E��@����c1�@q�N5���c��C���
�xa;��/�4���~����)����������Z��a���S���E�Bq5V Q`�(&(���zd��(�����<��{b�����m����zb��)!����<��m��6�����[�J���=&g5�)�G�#��x��<�7$�t+��r`���Hy��*�R22;#�K�Ma)���#aOG��aX��w�%��1!N��C���%��Rx��<*�m�4
��B�����:(�U��>�@�x���V����(y��p��������_���"g����_�@O�5��d�=;)�@��V �`�(�(���zd��(�����<��{b�����m����zb��)!����<��m���"|���,��J5�-�8����"La�o�)D�S]�oT��xbuki��+�`3`�~�����7X��N���h�L�-��ih�d��D�P�-	����B|�V
I��tom���d#=�h�^(VUD��xE:�g�a���<�}�[�p��w���\>��3�Y��e9��a9�E�����������+�[���2�"E�������2�2E��k��bX�L��@�Y�e�V"�+0P4\R](����J�����h	f.wa��E��S��A"t������E������+�[++����U#c< �Ic��)!���b�z����[s�8vJ���vXDE����b,HI�{L��0u��'��pa!VlQCR�3R��C:n�}����S�x"���q���3Jy�k���G�X�^����c�4�iN�sI��e�x��`�L��
$��OE��S���;Ey�3P���O�����@Q��ZO5%��2P��w�-�����7���|�[�G�����mA^=�
9H��������(���������v��Y�A�u��(���#�W��)�C�������e��|��eG�����d��D�P�-�W�����i�
)��E�20�<G�F(F,�!
(��U����g�N�����j��W6�)Q��F�vM���2
9�xa�O��o#`�h��l���E�b�w�@Q���#����@Q���i��E5�m3P����EM	�����l��E%eX����f;}"�y_�CM�g���6�S���'|���M�?��
��he�N(E�.���������"��=����1}��pfp�d����Pt��l�(���U�d���cz��_�n��0P�T1c�'P<UX�f��r0M�d�S`t��Ya��Q12+#��k'�oNxD�@H(�����M�5�Q�a%2�ESd
h��b@YL��@�t�v�@1�,��d�h��A�3P*���m��L��u;�����<��q����h^?-j}��e�w������;u���w\��n-���#���M��c����x��"'~=��	�a:��
C���N�{L�1���.|��"T��g��p��j�
��b0e���@��_��P����r��*���q*�����LK�#����b�����+���X��W����)b�(_s���b|tg�(Ow�����������(��Z�������W���N���m���7��~@��!�k/t``�<����2,�����\ /H*-E����d�M���WZ�H_�C1R����@16Ox�����_
�H�������S1PI�{L��0s�;��wE��(w�
e�^n�n������(��f�R���*��1y������Fd!T�S�6���@1�g���G�zT�:�@)�@Q�d0P��9��@1>�3P��;EyZ���@�_
y��i���@QSB�+Eyz'�b��c%�����?)B�"��������S\����n������;��fv4���c�1P����(��/y���u!�m�{���q"�i�3��d����Rd����?s��W��?� m��V�rq6(Gl���b��S?Q����|�������N�w�)yO��'�6�d�9��EM	~e�D��'���|��G������<�(����'��j��f�(Ok�'��r_(��;��/�o��1e�[�r'�kj�?&�D-��S�?���#^P>E*�1�sjfE�%�Z�?����y��b��.���i��p�7��n
F��	P8�i2�cbWI�����k'��P�b�-t����2E�e�v��5%��&
P$/���-�����_��
Rq��tn���;i�(&�����`���+�d
0P�?a�kN=2P������@Q���=1P�WC�6EyZk=1P�����@Q�����O���~.��3
�h��v�/�Ri"�b����� �+��o���B6�4.]E���(��#!�c�B1P�]�C'������G
{J@���d���=M�{L�*��@e���_�����i��6������@1�B�O�X"����_�D]OEE�N��B�;������4������<(���{bQ���!2Fd��bDrV���aRFd��bDr�T��bL�E���b������bL�E���bT�����b��6����7�+������zI�3R��u9hT35��P�3q��b<�q�O7�w��B������H�
�!�1�����|���+�����*�E������Z|^��d��T=3�/����n8���Z4L�j���Qu�@1*�bn�(@�Nd��\����y���_�t�0��'�|�	a��bBL"(� 7e��E��3P��9��@1>�3P��;EyZ���@�_
y��i���@QSB�+Eyz'�b���%x}NvT��-#�%�����	t�p�s~p/!�O����p��L�Y�����	E��R7���������������-,�� "����TTD�a�&Q��&��hb������Oli&����
A�(((JG�m������fvf��W��3�����;������������=BQ
��������$X��>:mL	M?�:�._�1jHe����Z��s#�����Ev�q��l�hD�v(���KBq�������,b~�}���)~G���BQgd�#�(��A@�����A!��k�PC�60�bZ<J!���B�6*�!���B�&�� �#M0_o�o3�.>����X�h�6.��e/8��~gBqo]�)'���:uL�N?6H=:�_?�B1�[R�BQ
�Ow����!Z�!�N��wD1]qB�'����5F
��Qx��;�/F,6f{F�-O8�O�N-s}��PL�\�5�������k��`U�:��PD�L.�a�����H��P�&��� �	#>(&����p�6 	t�P�j#$��
H��@(*�0��C`��C(*� ��X
�B(*��!T����S�L���@���U�%�;�O7�[a��
�]���[���{���];��,9�lM�t���A(�%�����,�x���+�D���t�	�4�W���|���!�>J����gjh�Ga�k_�N>:@�B�������K���Pl2�?�F�Y�`����'���+O.���R��8��R�f��EBQi�E �tB�,�]!�t
B�,�]!=t9B�%8�� =t1B�4C @�"_o��7���
���'kb��s�����J�0��*�;�66�����&���U���'����?����[DE���Hiv�P�KJm?Eu<_^���u��|����-R�t������z�QG*u��w������MMf��`�Y������eh�P�H�9��"��W��9g�[���W'�3�D�B�1,�bFD��� s���@�=��D��C(�3N�B1�}���� �$���P��;�
B1JB�OE}��3A(���}��7�[ZZ��Q����X�@&���w�~����gO(��7?l�;����f1r�yf��N� �B�&(�>��G��=cvo\�t���t��2b)���=~���~�@��O�G���k�cK������c�PtBK]�\���'�����h@�B:�x_M>�D���H�9pp�@(z��� ����~����sF��p�P��BQ��L��4�=�P��:�	B1JB�OE}���f��/���O���;#7���u3�i��b��(�6J�>�f��������.?��f�@i@(��#���.���^��W�5P��_�a�:m�:��zwi[{4��1�h%����!z��z��;2�s��"�9���98�|����6 	t�5��EU3=�(Ds���������4�o�Y?�O!���!��P���@�;E��F�PtJLME5�F�PtJ�}E�����P�B��XE�����PtK��8Eo������������RKo�!���,�f��qA�����=�t�������N���%�Ip�)E'�Ru}!���H/eO��bT��1f��\)M:�M���5F--k��:�Uu�8z���������E+g{rM(�o�����S��i�a�t��R*v����B(�xg#�$EI��
 �f	���P3���a!3R�����P�`)�
����P�6A)���h�p�|��:�b���'��^����;g�S���7N[[[i��~��VSM�5��V����g9�:x������
a��m���!zw}D�4yD��rbi��p>_c��J�fTm�?>UE��7Q�)r�9iT���TJ]��`�n�n�y�kB�_���
������6m�P�hgt�{=���9�+�s��O ��~��B1;�!�q�P��:>�b<
}�!���f�P����BQ�|���n���5�_����Z��_^��zt�QAA�:n�qx��O�w����u�n���zu.4��uV�BQ1P�� m�����({���=o��dA���AE�����[E��i>_c"�H��\2���V���5�	�zs��:ob�U�u�B�12%rQ(����7��=�h���Y�J^p�P����C�DB�>� �3�P���3B(f�;��>���X�g�P����1��>��L�QzB(����7�Y`|�5L?����"Mp���
4n����=��4oE=�Z(|H�"��9����X�4 ��l�PTw�{�,�E��sO����9�n������k�zZm?1fG�mv
}�=�e�Qb���%4c���d�m�u>�E������|�l�'��D�eturt�B�	-��E��xVpL ���b8BM�B`3��P�H�BQl���I�h���r��I���P�"<�b
0���f��/���OT��]mF��g����S0��l�������:Z��1Fv�1��XNz�)�r� ��^�y�X�-d����=-����rZ��,��1��E".����WG[��\��,�s��'��n�B(�%�m\.
E��755�O..J�o�>;�!��Y��PT��@@E-��@(&���BQ��D�	8D�@(��MB1%�EQ�I�C(&�"�BQq,A��������;���� "3���9��N�������t�s<C�MF~��2h������(I7ul��l��T�����B�Tl[������s+L1����\2�{zI���]O_VG�?G2��3�]#g��B1-��\�d�D�X\�``EA������H�@(�ci7��]Rj�A(��i7��]R��A(zg�&��j��@(zg�4��Sbj�C(��h'J����k������7�d��C�t��e��2�Bd\.u��F��#5����7"�mWW������F���	�����q���%�bL�z}e==�z=��'��v��e'���!�����d�Y����XC��4Rm}��3�?�5.H��V�BQ��q#���W�_# ��|�h� �L�r��������9g�P�wE}�!�����OC�cE}��� �$���P��;�o��7�����/�jb�zv��O������b��?��o��k��s�bM�+
��Ww������1�Z@(��~��0�Z��>n+{z���Ie�)���p��i�(I�p���9�gV��"D�P	�!ph{��
u,�b�)�<=q8������s���9g�P�wE}�!�����OC�cE}��� �$���P��;��b�1�p��f�������ri�q?��K:��~E)gn��Ls������`���-9�O?8�B��)'�P�����OC��/�����������4������/l�+V���N�@@]�<��_h���*��r�&2�K�i�� z+����7��~����#�Z�jy"��PGlI�hA�e����$�$b; ���
���X#�����!S�m�P��<���Qm�v2����h�����uF{H1��;�I�
�����u�����*�!!��PB3��Rq���I�YvA(Z�h��(�����3~�}����"%<{t��7f��a�}���o��?>YC�wG�Y��t�� M4fG����)��C`��C(*� ��X��� s����@ 5��l�Z ��������T+��Yk\E+{ uP���P�2���(M8y|��\$���Pd&{k[��95�t]D��3�����K�[E���+?i�����I����~pN�X�y����A(f"$��(�����<L���5���==qd�.��Pl�}�!_��[G_TE�����t�qAc�I��7!����BQ��4�q0�0/	@(��i�A�� ��}E��9#�bv�C(�����u|&�x�C(�c��%��'��>�A(r���o�����1p������R�n�u�Zi���t��5��~Yy�X?�������|^���"���l$[ ����j������G~
�?��=-��kP�4����h�;����������A:��?�������y�������a@��P�����(�m����w�}����o�NW\q
80���5��L���O�h15�?�y+//�lhll$�����JJJl�A'�v��I|��K�.��g������X|���4m_4�#���}qq���������i5��u����~�7���B[�@ss3�B!�Y����&|������s��%�?���E�����
�����D�|C3���>;h��t��"��Z?�*D���-4k�1��|�����<�4�����}���������_������;��h[�=|��&�w^5��,����9�x����5��U�y��W�h���T�){���>���tI^��I����;���/�-�:����;v��z��e�pCe���/`� ��B?�L���?r�HGY���*���[�Ag�����;��~������/0�A$���F�����=�-������;Ef/r��5����`��*���������B��3�K0��4ux�Ng��
���F���"����ZZ"����a:nX��@Fx'� �� 5�����-E��0�	l���n��fK���g�������O���{'���4s���}x��������������
E�E��~��D���r������
pF��y.�p�a��g������o���~���x�bee��^8���_p���v�~~�5F�;_S���[����r�"{]C+��h+��n�M&3�G�����ln�YKZi����Rc���c}4��%�k����>�
����:���u�?����Z_���^+�[����V:�G+]}|�!�[����TmC������#�\���+�	���������^[���z����.\[��s3����.�u��5����3�Pts&��1�����+�SXCQ���?�w��e��^��?��'#�P�������c
E}��3a
�x�c
E}������1�� ��!�5�p�,|�y���_��K�6��Vn7u#��WB��.��me\yv��4�=/�����|�,��
���!�������������b<
�����pM=����Z����[���[�ki�8b�~/�?���<VC{k"�.�>�rz)�j|�A��5@tk(���qF_�z���#���D<��p� �3GF�DB�>W�!]a�<B�3BW ]as5B�6�� =#tB�6O� =�s=B�5:�;�Pdy���:zv������G���i`�6Q������t���}�Qy�E����TZ�`z��3�h��n���&	���0���Z�|g��g&7d7s`55���^(�_UO�}��jB�:�o!]2��FTSMB1��R�.E
����PlO���b��2��NBQ�;BQ?s�������C(�c�	B1������XG3A(FI��	���wG�M�����F�}v-5���=}t��r:l@�P�����'Ds��,��/*��,��^�It#��V��d�1b�~�DOb��������V�����?z}��C�ki�;
���ys���������S^N��z��B(�g�v$��[r�+ s�L�8@�&E��v�PT�A(E�v�PT3C(����!��f���@3��T!!m@R������VbY��{�(d���[��v�ug�����Xk��7����!Z�.l>/�	G���e�s]��P�E:1�b"�g!c��7?l�����7����3�Q���&�f�y�f&�������'�h�G���J��:&@3F�W����^�B�=�c!��s;B�-9����r&p `���MP
�A(*�� ��X
�B(*��!�b@B��B`3��P�H�BQ����6 )��Q�"��������/��-�h<���&P0)g���z��:�lG�O�N>���R�t��������?E��@(
@Mr��0�iV
�����x��]t�����T�L�$iszW��������6�j��\���R�:"@�A5%�!��6�P��BQ?sdTKBQ-ODq���-	 -H���P����B��Dl�����!��k�PC�20�bJ4�
��x�w�}Q�|��V���x���rL�zVFf���,D������o8���w/����BQfKE��v7�k����1p�:���>��B��Z�����b�Q���������7 x���f����*T�	B1;'BQ?wE���Q-E�<
�	@(�#�$�P� ��BQfKE��1�R@IDAT�bh��PL�G�BQm���)��6@(��M������j��w��OVS�B���h��z������~uY%FJ�&�|�(7Mh�4p6�eO�eO�|�6�_�B����Zd�@���o4e�7lk�_<X�B����iet��b�W��3E�]�Pt��� EO�08@(��I�!���Nh�������(�N��������(�v(���������v(�������h�vIy������5
t�K�T�����.�ZJG
*�Ow6��o���U�YS�@{���5�B��|�gB�.)�� ��L�������&��#���f_=bj�kO-��Fy��}%�S���������q}��u��o��C��W�����SWB1;�E��!�3GF� ��D4'�(���B��D�E-�-I -H�v@(��MB1-�FE1�)C(�D#��(�7!xG��v����jhOMd�������2�hH���)cv��MM&��>�1&@g�-M`��	�����V&R{vV5�}sk����X�����5K��G�H	�X�~���(w���:z���XI������	A���2�bv�L���C(�g��j	@(���h  NBQ�%�����Z0[�@(Z����PC�60�bZ<b��bhS�PL�F�BQoB��&��?��km����IR����N(�i#Kh�����!w����~�}���Ji�A�&:�@(��l��he"����.z���>���i�r���
�s�+{Z��J����������Jh����P�B(J�����PL�G�BQ�*b�$���6r���
 :�������@:�������y
��������
����a�:���"W��cU�zcS�����,��G��B���S�(��� ��x�9Jo��E�h���~�jy���k~���~�@U�1��
c����Si�/���������v��g�Wx�Qv�0�, ����P��BQ?sdTKBQ-ODq���-	 -H���P����B��Dl�����!��k�PC�20�bJ4�
��x�w4��/��y���{
1�1�X'��#���a����|���:jp�`f�C�����t������[�Bw<WC�?j+{:��b:ob)�����=m1�������{��9r������*h� ?��]� ����3A(����BQgd�#�(��A@�����A!��k�PC�60�bZ<J!���B�6*�!���B�&�� �#M�#
�������B��:2��>�t�A~�tG3-[��
h��]>�,%�EI��cC(�f#��e>����{^������G�=������%�c
���^��������W����~p�����!���E��D�PtC��Eo�0:� �p ����#\J:C(*��8��cdJ@(*�h+��-L�;A(*Gj+ ��-LJ;A(*�i;��mT�;vD����0�iV
m����|4�W!U���'�"���t���q%4���g�n@(���}��w�N"p����h�������^�N��W�4�?���X}������(������=�� ��B1#"��"X��PL��y@B1N�	@(����BQ��Y ���BQg����u|&�x�C(�c��%��'��>�Q(�Ze�<Xe��V����p�J}�r���1����vRb�����
�D�z��o[���~��m�eO�Z[#s�N�3�-�>]��4���~��P=���^\)��#�J�B(�?/*{B(��i/��=N��� s����@ )��XDwB(��MB1%�EQ�	�!ph{��
uB"�Z�@(j�lI�hA"��#
E���'�h��&jGb<��i5�O�9����m�C(�"��B1���g���������]���,�+O.���eO�kI��35�jc�Z�N��G�s���$!u���9 �L��@(JF|i����PT�F8E��@(
@�B�$E] �tB�!0E�!�tB�,�]!����
������
���J�h���t���J�.����1�b&B2��2\�E
75��E�����P}�K������>��&P��r�tG��6�%����~v_��)��Gr��r}p1��H������X��Y��	���$�d��b��#/�$����a��y
�������9
�������@:������
 �����!U(�[�����=m7����W�h�1%t��������=zB(�������{+��%�h{U	��+{:����>]�����
�g��#�L��k/����:����
�[d�)	���`~�B(�?O���#�Z�jy"��PGlI�hA�e����$�$b; ���
���X#�����!S�m�P����
�u��t��Z�lGs���'�)�s'i�!K����H'��PL���Y��`}%��i%56�,E��}��)�t����e�;��`�]^���~�xM�%v����^TA��_C3c��>�P���L���92�%���'���8Eq���$Zv@(j�lI�hA"�BQm���i��5B(��MB1%�EQ�	��7�y����)��dK80�Oj�[���U��5Y"���_9���wS3��,��`�wC(
N>z����O���������b���'i�%Tl�@��[u���.��_�^�����S���ggB(�0k}����BQ?sdTKBQ-ODq���-	 -H���P����B��Dl�����!��k�PC�20�bJ4�
��x�Go����$�����*zw}53�����t����_�U��=#zB(�������-|����/|������F���:x��/��]�y�5����>gB���C(����E�'BQ?sdTKBQ-ODq���-	 -H���P����B��Dl�����!��k�PC�20�bJ4�
��x�Go����&~��^5n���i��4mT�.:�,���'���G�A(���Y�� ����&��<��7�����eO��n�;������fK���#T^)����`��J��cA(�g��'��*���-��"�� ����Kp�A(z��a(��x�B(z��p(��C`��C(*�0��C`
�C(*��"��h.�����hBq��z��(D[��7�`�����[BSF]S3BQ
G�Q ���?���J�x)L;�D~'K����A:yT��
�M;������m_l����4��b
e_Uo������h���^�*i"V6@(f�:r�����
����a������a�.�)�����.�y������.�����	�7��?���G��cd�*��'��a��}�x��
�D����_c�N�~��>��D-���G���A��������-��ns�|_Eu��p�����t-$�`V�A(*j3��MP
�A(*��PY!���H
�	@(�g�v$��[r��A(z��v4��[r��A(:g�b��
��c@(:g�u��W���C(���fT����&��Z�/����
��������2�^�~��X m@��(5C����G6���
T]Ql����Jh�A�"�_s����Z�@����|�.>������q
���C����V�f2E���Q-E�<
�	@(�#�$�P� ��BQfKE��bh��PL�G�BQm���)��6@(��M��f Hh��'<;����i��&jlj%QM�K&�RO����������������W�b��y]�s&i���W�twM3�����x�>~��~��i���L����B1�Z�E���d���#�Z�jy"��PGlI�hA�e����$�$b; ���
���X#�����!S�m�P�������$��>����.o�=5-���G�[b��Yx���FJE���_c[�t��z��0��y��I��T�Y{i����{���j����5���A*/�P�A� ��DE���Q-E�<
�	@(�#�$�P� ��BQfKE��bh��PL�G�BQm���)��6@(��M��fG��W���o���;�iH�"�9�����,L�����'��P������t��ZZ�������w3HG
�XeO?��D�x���}��q���4��*)��%��1�Z@(j�m&�P����PT��@@���8bKE-; �`�$�P� ��(�6m`��x�!������h��(����o�w4����0=4���nj�c��9����z�d�	�b6�c�b6�'����A=� d�~>�.����k�=��A
��ps�~�D
�5fHG�[/�DC���P��B(FI��	���7g�P����PT��@@���8bKE-; �`�$�P� ��(�6m`��x�!������h��(����n�'t��'_T7�?_�����t��~���J�"(Sj�	*E'����Eu,�FJv��Y�Bw����"eO�_��G���A�,�eO������F��![��D^��o�����@�q�W�
BQ����6 )���(�i'��9��7����
�����1���������1���y���������y���������9��f�����o����Zz���~��(_�}"A(f�]���{�k���j�=]�@5!c!Ec��������A��RM}-\�@�z�����W�B���:Qi@�"����9�������^	b|�	@(f� ?8$������
 �����!�
 ��h��n�����h��n�
a:������n�{�s��XXG����S�P�����bv�&������,0d���C�iG�yP�+}t��C�w���;�6�����lc
W���������[?��@(2���~����#�Z�jy"��PGlI�hA�e����$�$b; ���
���X#�����!S�m�P��<����Ny�d��z���#.���O��ySA(�������&���:Z�>lT�Q�t��b��IeT&8�O�M;��1��K�o{}<K�ga�O�6E)���B(��#�
�(A1u�P�I�@@E��PtLQwEE ��Pt�CwE�<�P���PE�\�Pt	��0E�Ou��A�����ga�S�B�zR��E9q���9
������4eO��WK��k�PC�������)�4���=�ps���J-}�92�%�53Ji���!��e3B(��MB1��'��t�p� `�P��6�P���3B(f�;��>���X�g�P����1��>��L�QzB(����f��#����(=�l���e>�R�N^	��Z��B(�ci7R�k��U�����b�����N���c�v��d�V�������x����c+).�[/��{Q�B1'O����P���PE��0,g@(�������=��8�������X��Y��	���f�X���H�B(J�MB1=�VE	��cB(ff��G����rd;�D�}�k������3���{�k��;����!Z�.R�g��VD��Z!ZT�BSs+��A#���b��[E����v
�/
 #T:��!��KE���Q-E�<
�	@(�#�$�P� ��BQfKE��bh��PL�G�BQm���)��6@(��M��fBG<QJBQ)N�� m�R�1�5&lT}h~-�����M�vH�"�zz
��������o�����yu�p�2�=}t��]��s4k(:���3��2��A(�F��9JB1GOR�PLEFn?���t�!���k�P�c�>2�b{"z�C(���>�b{"��!�'�������t7�e2"*�P���BQ?�L���V���o���]��{v�%OK��c���)�Y~fI��L�g^sH���N�'BQq��I����P���@(j�� ����J��bA(������j���A(������
��c@(:g�b��
��b@(:���7��*���d���9z�!�����1��:������0=�(D�|){��|�����p�*g�o��d�����r

��ct��2�c�PG�4�bR,�;!E�"�� #�$�����X��8�������x��8������������������x��
���d�8�n�g��n@(���}��w�N#d��4�[����4{I����vP�B��Y���k~�=�ps���b-m��uYn��x�)e4aX ���(7Mh�4p�� ��"�6��P#�!�����(�Nh�������H�Nhy��������n�y�������n�y������n����~�@(:���7��*���d�������U��,�z��e�(��������I#�����

��gj��.�.d�r���r��o����.�y������.�aHN�P������� 33R�BQ5Q{� �qR�BQ5��� S��l�P���:6�bj6R-�Rd���PL�Gek���*s!V�6:A(���e��nK��Z�V�����FeO�;3���65���
�XC�+5��� �����_���(M8y|��\$�B(J�El uPFPHBQ!L�� m�R�
BQ1P�� m�R�
BQD! ]@S0BQD�! S�BQHa����]�PtLQwEE ��s��	���o�h�1K�%\����YH7�_A=::����Uu-4oE==0/dL�q�C����V��K�!�	'������^EI��������
	@(*�i3��MP��A(*j3��MP
�A(*��"��h
�@(*��0��C`��C(*i#����6���C��)�����0v�1--��`M=� D;�D��v���%S�t�����u��fz���/.m0&(�����[3������$�$�; �#�0Ea��	@(�&�9�bfF= %�f�	�������H:���������H���h�����*i��e�f�huCB�
5�c �3t��5������K���\t��~����U����ac=�����t��%4s|�St��C(���y��g��@(:F�9FB1�N2�P�DH};��z�v"B(������z��"B(�"#�BQ�o��������P�c�.2�b::j����W�� ���P����5fOM3��n==���<H.{��{!���
�,����+66�����������:����Ji�����Z0[�@(Z����PG�� �#<�%�m�6����-�y������+���&��5��L���O�hii!�����r=�>�u�Ghll$�����JJ��\L>���s'��]�tw���Y*�|>*-���_�����9�/..6�������kZ����w�N~�����	���
��u�
���,���!�$�/���<�s���s�2�3:�]�[��=��0n�;~�94����>g��`0���c
_������;��\���4��������&�
6����t��":���s=G�-�;�������X��zv&���"���-����k���	LQ7\[�t���;v�0G������`���|���^�v	@(�%�~ ��������^u�Ut���:��        �l�Y@s���G�[q������	��j6s�G��b?�B[+���J���?D����t ��@.HM�/�<�P��@@���M����o��={6����N>�d���wB���O3g�L��'�	�7�[���[��y����P�YD��g�I�M.������wa���g���1Wv\xf���������\��g(VVV����!�A ����o���\c���5��-�u��3�����9����f�j�n���G����]���M���k�����kZ���#�B
Z�ge+�t�1���g|��?^/�����U-���HQ����zf'r����{9�����������(�w��k��Y���a�������P���7^m �5��D��y��]�?��%����2b
���k����;�P��:>�P����1�P��:��o�l�s\�XCQg��7�W�Xa&>|8��&�XCQ�vi��b; �:��45��;����k��>R24`�����4l��
}�m?��D�������|��K�N0���+��55������I������W�6�y�����0o�WOBQ=SDQ��x��PL�E|'��8��	 �b�	�(�5cP���D:@(�`MB1-�FE1���Nn�[c�k���y��	���N�1m
�}����O�f�"cY�iG��%�K��b.ok?���B����c���G�[B����N*�bv�!���C(�g��j	@(���h  NBQ�%�����Z0[�@(Z����PC�60�bZ<b��bhS�PL�F�BQoBp�7���k���y��	���N�1�����e�4kQ���������_^^I���\.)���ztA�>�Y��o7]~bs���G ]�M=�P���qE��0 �@(��	���@&���o�PT��NDE;����PT�4UD�Tdd�C(��MB1���rl�E�PLGGm����j���� �s�!�swz�	eOWll�?����p��)�/.�D��3��.��Y��r����=�Z=U�E������;���w��^'����8g�P��BQ?sdTKBQ-ODq���-	 -H���P����B��Dl�����!��k�PC�20�bJ4�
��x�;���0O\�Pt���@EO�\
vs��dG���ZZ�YS,��J���A*+������pS+=�v==<��X.�v��Et����j�P����E��� �3GF� ��D4'�(���B��D�E-�-I -H�v@(��MB1-�FE1�)C(�D#��(�7!����	��EW�<�P���q7��/���������H�SNz`O���N�����eO���Y�9o7��x���C���3+3�2B�=�c!��s;B�-9����r&p `���MP
�A(*�� ��X
�B(*��!�b@B��B`3��P�H�BQ����6 )���f����u���~E���\c����Ma��C�	��+:��>�Y�t��&z��:Z�&lseYM=*@�L.Kx
�O �	'������^EI��������
	@(*�i3��MP��A(*j3��MP
�A(*��"��h
�@(*��0��C`��C(*i#����6��K�	5C(
�M��5������f��S5����X�s'��)���4����g��8kQ���4R��wW�9��N����:([s@(Z�H��P�&��� �	#>(&����p�6 	t�P�j#$��
H��@(*�0��C`��C(*� ��X
�B(*��!����B��E��@(
@���5fOm3=m�}nI��(�9�}��r���0CV�����7���]-f�A����A:jP@��@(j�K�C����6�H$DBQ,���E)���B(�f#��(I7ul��lT�@(�&j/��=N�{A(�&�9�bfF= %�&���f�h�k���]Rj�A(��i'��kLcS����n+{Zl�K���ih?�����g�[!zra�j�[���(�o�(��]��'�P��;�B1�B�Em��H���X�)�RdS��PL�F�BQ�n������n�PTM�^<E{�T��PTM4s<���$z@(JPM��������.E�����PT��N4��.{�co���*��ed���hr�N8��:��N���p+=����y����6�c�������!Aun�:i���Plc����.��#EBQ�,���E!�i�B(��#��(7Mh�4p7A(*j3��MP��A(*j#��
H] ����f�p�m���MP��A(*j#��kLu��~��^~����������Ji@w�3�����{�
��y�E��%�qG����S�^����N�`�� ��!S����!��7�

���	���sF��p�P��BQ��L��4�=�P��:�	B1JB�OE}�����w�/�bv�)��~�^�1\�t�'���Gkb^,��f����(G�����'�h���y�����SF��	�����3u�N����C�3E��C���$]��P3��P�H�BQl���)l�PT�A(E�v�PT�f(E��w�PT4M8/7���ES�	5C(
�M��5����eM���*������%S�4eD�({Z�&���w�7�������&3i��>:wb	M>"�� �e�P���L���;��~������Z��� �[@(Z�h����%	����E1�iC(��#��(�6e`��hD E�&�r�?!�8"�������P��������Z�����9E^�����4����qHv|yY�f�UO����8�w!}��R~`�d���!�b�	�(���B��;���b��0.@(�@(�g�!��BQwE}��3A(����BQ�h&�(	�?!���z�_��v�L��9����{��45��;������r��.>���RyP1�4/R��1��X?�����j�#�7��"��i��������N�����@���P����yIB1/Oz&����C(�g�!��BQwE}��3A(����BQ�h&�(	�?!���z�_��v�L��9����{��p������?���,�x���R�j�=�T������Yr��j-������
�y�?}��

���N��� �s�P����PT��@@���8bKE-; �`�$�P� ��(�6m`��x�!������h��(���^o�'�� m�R�BQ)N[�T]cn�UE��o�pS�(�������A��l�T��{����ji��a3EIqM^L��R.�2m\��x�!�����
���b��(&D	@(FI��	���u|&�x�C(�c
���u|&�x�C(�c��%��'��>��n��;���	B1;�BQ?wU��y+����uT���]|t��N��!���i�Y��~������M�t���i#t�����bV���~����#�Z�jy"��PGlI�hA�e����$�$b; ���
���X#�����!S�m�P��\�����x���bFD" E��
���co3���*��������)AC��PiI���.Z�@O/��m��q��QHg�+��G���"��(E6}\��|$Z!%�"�N�:i#( ������)�����0��y��������y
������.�y������n�;H�����
 �sWy����U���	�h�[�������qA:�W����~+Ds���]{#�s��"��� q`�~�FF��`��,`�P�t�TJBQ)Ny����g�PlOD�sE=��g�PlOD�9���t�!���k�P�c�*2�b*2��!e��GWy�?>.�'����T+����qU^c�,
����ioMD����3�])�ZLY({�jx�{�����(���������Q�.����@(
�M3��j�P���@(jC�D �����N�@(:���/��:�N"A(:���/��7~nGC(�%�m��7~nFC(���}��w�v#���o7'�a�b��������l���~�X5m�����E��t�� �_G1l,�x����puc����������I�����BQ+n3��~������Z��� �[@(Z�h����%	����E1�iC(��#��(�6e`��hD E�&Wy�?!0��%��i��5B(��MX�5����~�D5����M��,�������
����t�����������:qd�.�Zf��L�D�BQo���)��5@(��E`M 5�FPEBQI�q ��R�BQ%M�� ����B�+Aw�!�q�:
B�+A��!�3S1BQE{1T�������bv�������<����������R<�����XJ
hq�>m�G^���S��Gg�:��N7fLfk�P�yE��!�3GF� ��D4'�(���B��D�E-�-I -H�v@(��MB1-�FE1�)C(�D#��(�7!����	��$%��hD E�&
�����0��\-m��l�����9��(3�wZ��U�����������]Hg���a��f>�b�����zys6E���Q-E�<
�	@(�#�$�P� ��BQfKE��bh��PL�G�BQm���)��6@(��M��fBp<IIB1%�EQ�I����4�[�/�T�{7Qx_�����t��R��]o�����+����U���G*���+�a��IY��	����5�����Ei��/MBQ�0���b�����h�@E�6BB(������"��@(:��;��"��@(:���+��B�B����!���P��[BQ?w�k������e
��>�wP�BsE�3��SC�4R}cd=�����Rc������A��������C(�g��j	@(���h  NBQ�%�����Z0[�@(Z����PC�60�bZ<b��bhS�PL�F�BQoBp���		�$)��X�wB(�#�$������{������R�e%t���9K��PO�S��<S���aj5|b��v�����\�5[�bv�C(�����92�%���'���8Eq���$Zv@(j�lI�hA"�BQm���i��5B(��MB1%�EQ�	�%n�'$��� �b�	�(���@�SS�Bw��]���S$�x��2��E���-_6�]����MM�kf�9cL���Xf�EM; 5�n�B�
O!5@F
Q��x��PT�4SD�L�d�!e�f�
�����vEu,�D�PtBK]_Eu,�F�P�KJm?E�<�E����.�" ��N�P��]����4wy#}YY�pp�B�9>Hc�����66�����m������8����
j��*	�b*2��!e�&����
���|:[8V0@(�@(�g�!��BQwE}��3A(����BQ�h&�(	�?!��������g&���7E����1�74�������WQZ`���?��
}����e!��������!�����%4z����B(�"#�BQ�o�����`_>�P����c�������~��B1;�!�q�P��:>�b<
}�!���f�P����BQo����^A~f�P��y�P��]������3����
S���x
�1C�t��2�Z!_����j�����6"�9�O�L���~���2B(����BQ#�}� �3GF� ��D4'�(���B��D�E-�-I -H�v@(��MB1-�FE1�)C(�D#��(�7!�����$xb!�hA�e���	I��1�F.{����[����������[�ty����k��p$���x�� �������M�?�`�wC(
NB1	��+�yu�p� ���x@(f�:f(f�:��>���X�g�P����1��>��L�QzB(��-u�_�+��L��9o���K^c�~�@O.����7�/�s��N8��.8��|��E��%�����?�����g�+1�b)���m� E��@(
@�B1 4�<��?E8@H$���<t<�P�A��3�Lt��P�A9�BQ��L��4�=�P��:�	B1JB�OE}�%o��{��	B1;�BQ?w�k�������ZZ�&L<k�%��!~����TZ"����_4��=]C�E�o,+)0gF�~lP?�v!���BQ��4�q0�0/	@(��i�A�� ��}E��9#�bv�C(�����u|&�x�C(�c��%��'��>��7���������s�����5����ZTG��]O�u����*�+N,���^�;���W�h����u��9�������B�.)�� ���
B�%��e��|vpl ���b(�� ������nEa�q�!�`h|��v\*�8�B(j�.
�b; �O%o�v���P��)�P��]��eOg-��u���==et��WJ\�Tb{�mCb��@_TE�������A:r�����: ��R�BQ-O;� �PB�\&���g�I@(&�"�BQp���)���PB1����a���P����!��&���@(�"�T�f����uh���>E����1��4���h��F����J����ug�Sq��Q��K5F��F�	EfEN^Lg����E����������@���P����yIB1/Oz&����C(�g�!��BQwE}��3A(����BQ�h&�(	�?!���������W&���/E����1�v�3KB����7F������ie4��_��������f
7E��vl	�96H]���m��B ��R�BQ-O;� �PB�\&���g'���������?���4c���G�k�.z��W��G�5k�������3�.��2;v,���Y�n���^x�z�����?$���W/7n}�+_�Q�FQQ���R��������a��{x M�2�.��>|�%�X�r%=��c4�|�����R4x�`:���i���4d�����~�mz����7�$>�`0H�v�y��4}�t���_�q�wB(�&�9�bfF= %�f�	�������H:���������H���h�����*i��%}�?}���B1;�BQ?w�kE.{���}���|��:�h�1�i�=U���[�'���M�#�N���%SJ��1%TT(3#��k�PtBK]_Eu,�F�P�K
�r��b���:�W^y�������]KO<��u�Y�����OL�x��wSMM
��inn���B
TQQA7�p]r�%��g��x�w�y�)!��Z�OU<����������=���h�"b������A��x�G}�r�r�-t�i��r�~-����K+V��P(d�c���JKKM�y��7�R2~ ���n��6m�D|��|<����<�3�8��������#���<�P��6(�bZ<b��bh��PL�Gi#��R���A(�F��#��R���A(������r�)J��O�x?o�P��BQ?w��-_6�So��k�5�/�_Ht��~�����P���Ov4�mOV��/#B�S���%4uDPl�F'g
B�	-u}!���	B�.)��U��zfr���{�9���N�V����Fz���,B�e��Y�����7g�z��t�y���y&����/z����|��?{���3�����������w�@d)��;w�L}��s�=�`�:��C��_�8��x|���?L}�����>��?�x��������C=D|C|��I������'���B�g4r���?�F�m�H��������n�R���,YR���O<��-[f��^HGy�Y���<��������}�~��%�M��tB(��i/��=N�{A(�&j/��=N*zA(���<��sf*F@(���,��3^�zC(�"�9������b�����s�����kL�Qz��w����C�`� �mP�B��i�tP/k�./������r}Q��*����C^�*����@��p)���#�d��b��jj�Y�s�N���k�9.'�4�\K&7n�H��~;�{������~F}��5g&��Rn���ki��������X�q)T�i�����g��~\��� ��v.y��YrYQ.��������m����Y^r<���w�6�����?6gH��J�������k��?��O���N2�%�q�V���������'��c���/��b4h����5%d�N��Y�[�n����o���	'�@��zk����G��������x��
�����8��xy�
���������y	���������y������:n��?���'�bv�5��~�:�1�m6���cB�q[[�S^���1A�/z;{di@IDAT��=�V=U�E��Q��t�� 
 �^����PtJLME5�D�PtB}s��b.��,��;����6 _�X����-[�$�\~�� �Gu�^zi�+`���O��)y���}<;�����������c�$)����/��o~�����wo�Y�\�t���>^�1��8>�_��W���X�|��1����gS:4:���,*�u�LD����<�������?��)=�9_�u�����k*Jn��t���PL�Ez/��4���!�s���(A5sL���$z@(JPMB1=�VE)���:n�[�b�bv�������|���f/	�k+��������3;_�W��o����
S}cd&���t�!.tW;��C(�%�m��7~nFC(���1�DB1��F����~j���'�k��;.c��&����n��f���4g�%[G�K�~��_������p��q��-�v�m�L@�v��
K ��g/�s�9��@.�:x�`S2�q����o��4`���q�A��G������R��]q������0�g�=�qyV���3/��"s�%����7����t�}��k2�z���|`
�������Jn��t���PL�Ez/��4���!�s���(A5sL���$z@(JPMB1=�VE)����n�[3��{ �s�!�s�u�	5��������pd�"��QH��SN����}?�/���dT���<wR	M?:H���sa�P��Y�P��BQ?sdTKBQ-���fy��B�>�h*))!��+V�H*���
7�`JH�n<����i�&�d)��R�\n�����9���N���,�7����N9w��]i��9t�a�����-��*������h��3Y��9��8�s�!�O�:�/^l���������5|�A����o���k#VUU�2��t|����gC'��r�,D���
BQ�n�����H��P�&�<>�br.{!%�f�	����DE	��cB(��#�
�(E�W��~k��{�bv�?��~���1F�+Z�����[G�wE��v.������6JM�������{i��H|��x���4uD	��
��M�B1	
� 5@n�B�<�;�yw���K���-l���X�f(���7K�����c�YD1��	&��Hy��i��F7�t�9[��I�R�,.�7.'��x��fYT.��eN/��rs���������5���}o��&������Xf�6j�(Z�r%��=��M�FEE���jll$���3��K<���|������Z��,�ZXX�fYT����?��<����+�]�����5!'O��:<�%!����]� 'I����.E!��B(f$��(6MX�4p� ����f����S��� �s�y������6��.X�V����#eO������W�T����P�d�J�jz)�;4@
�+99�J0:������"@�	@(f��K���J&o��v�2���r
��5��7~�,�F�m�M}��'�uyC^����)���c��"�g����G�.]j�G=����c���0�����g!��!�l�n��� ���m\�n���+4e��}bY������|�||��O�>�7}��_o�\-h�i�?d�P�u��+�7�d�����/�=�����%��d�ig�Y�\:�;���� ���%o�E�(;�C������`g,��'�}�v������/��������|S���+++K�
��J��"��)�p)piy�l��W/����v+$��m���-//W�����o���������9���e�s �����I�1��7��-�/����cg<��#������U��E��Lt^c�Z���DO�UD-�����D�?��:���Q�����/���YX@���N��5�YcZiX�\������o(��Os"���Q�����g���	�g��[������k�?-�xI����{�$�PL��g)����_M�8c���B���8��c�g�������!Ec<����|���Q����;���Gi�i���������=���l�2S`������
2��t���s�
E�B����3�����6�"���O%��x����d����G<�Rr��H����L��        	��h�����U�G�i���������}jF�v_����igjl�|�~H��^�[�v�����ko_�o������cd���tB��;�4���'�h�<M6���=n�8sM�Gy�N=�T���M�x��W�k)�L����"�
0`�93l�����_|�Y��gFr�����a	�2p��If��
6�ay=E��=����c��%K�'�x�,�:~�xs�D���%W�d��5kh�����3��%O���q9�xF#��hw�R������L��	����~/�7�yk�>u��`Y����e����v���;\j��`��8o}u�R`��o�~�7�SQR���+|}��J�/3����Q\�7���G����5F�o���k>��"�n?F���x�*"��h�."��^[�7>+���}���=>��r��������^^���"B������K'4����,
�[����8ahM�@]���~tu@I���$P4��^[�z�G57R��������S'�~��$K�4h�>��|M���gN�q����s�p�
t��G��>h�mx��m�N8�v��M��{�)�n��Vsf����K\��s��	���S�;�0���^0��_7�p������R&��������e������2��� b��������y�,�T������2�9��GKG�u,��~���'��O��k(�&�:����|��w���;�E)�����`XC�6*����g��`
EW�<���:���y�-[\q�XCQg���v��fB��_���k(���>�PlOD���kLu��^Y�@��3���q���['���J*
pT��I9o��{m��l����KO��%��4q)�Hkv��5��k(�����W�^m&��@����;E���Q��l
E��������Qq�]w���=.Az���3^x�����;���n���=�Xs����'�o\�t��it����<`������ns��o~�����?���t�5���d1��E]d>f�w�P��]����������o~���*�.��\���7�0gE�t�I��q�F��_|�ESF��K�-z. %)'��PL�����.��y yH>�P���:6�bj6�-��t���PL�Ez/��4����o��e��A(f��C(�����b��e7���Ru]������e4��b**t#[�>�J��}��"v���w�*�qC���:�Rd���PL�G�BQ�*b�$���v��J�dB������,�x���g�iy�<+���n2���|��f�R^�w���)�~������S������'��G?2e ������v"K�	&��C1bD����7����7b���3����6�������K/��~���S����k��3&y&$�_�����,��������k���eFY6���,L>.�*�E���$�����<t=�P�E:1�b"�g��tS��PL�F�BQ�n�����H��P�&�_�������#���E���q���=l�P���"kE��#t��2*6��S��lX�Ov4�-�WS}cD(V����`I����~��!y�z���t[�6x�� ���i?���J&?��c��_�j��Y�<������\��/��_~9���K����,��Z�j�)�.\h�&d�����N�����%K�5Yv����z�-�����o��<��sbeHy���K�g.�Xd���������B��S�����;.�.P�3g��'?1���������k[=��������C=�]W�gZ���Y���r�9�R�E���$�����<t=�P�E:1�b"�g��tS��PL�F�BQ�n�����H��P�&�?7������ �s�!�s��5fwM�[){}�����_�L�%�����[i��z��!jl�����WO*�����9�B1;�BQ?wE���Q-E�<;l���J&Y�p9��|�;�l�K.��z,
?����ok���[�<��)SL�P��<������W�b�G�������UVV����i����0|��rK>^���������,�,X@��
3�UTT��������,$��g�^�Y�,=yV"�������'�q���u�[�Y�,?��3:���������7�&���eRy�E�����/)����BQsBp���@(jC��B1��EQ�)�C(�D#������$E����Mw�v�K�9@$� >�����	  ��*>��Qy*A@A2VA2��v��eS��������=S�f��7�NOW�9=__k����B(����P��b��h�x0A;:����B�=��{;�]���G��~6oP�7��;'�k��qc�=�������+��P�,]�p�����w��WjAF�b�"��!����0�����T�=�Dbe	E�nw�yg,/���X��>����CL�U�����S�z�
@��T��c��?��Oj�"��3�������8~*"5or��<�-��Nu�O&Wk�.� ~*R�����P�<z�
J�U�mMri\}bQ�u�5��4����������iX�|z��+�E��1��\��"�	g�G(fs���P���8&B�1#�E��1��|�J�Vd�q����>����Pl�5G(����6�u3�#���w��/�<�|�S��{�z����4�������������
�_~��;��^���UVp��v������P���9�@(��9b�%+K(��V�����O ^y�������)JU�r�!��>��j��6(��8�LU)��P�$��SU����*��6�������u
���71*#�8}����E�k�!�y�k�|���k��ar����<z�M7�$O?�t|>k��v<�N����&s����/�<>��[o���g�u�_�xj�<0��*�_��@(Z���Pbr���P.���-��5����l.�{������i&!� CP^������]�fB(��� �soW����r�m��?-���W����k��4yt�u���L>q�����������������x��?��6������G(���P���~	 ��������X���z�����*]��N��NR�Jt��1��+���L�4)��t�����1z��������J�������F�����*4��O+j]kQ�,�z�T���]�Yc�q���7e�JE��y�8����1�!d�~�b�U���P�����G�v?B��omt�b-�p��p�k3!ki��F(��<<Bq8�������F������P��]m��{��G�:wp�����}�7�����=]���tM�c���,������K>u�$�f�q2ft��S��B��pv|�b6��EK��A��29 ��B�#����%Ay��P��d8�bIP�!=@l"B�	hA(z�X1B�"0O���@������6�� �sy�������'	�|n�|��y2���,|���NU��d��rO��|���r����6�O>��I��c�������Pl�e@(���P���~	 ��$�	 �� SH��@(��J�PL!1��P4C[�X����h�670B1�iB�o]�vu���D~@(���#�sog��K��W[ ��84��z����'�+�)C�O�������?X�������(��Z.���6� g�@(f@1��P4LxsEs�$��_E�<�DC(����B�?�2�e(���P���j�bUb~�#�p��X����E,Ejgg�s����\]�bx��lc-�����i������t��Q���M�-�'��4~�p��er���W7I�]�'�< ����AF�b@F�E#�a�p(�
���L�$� �X��B(�"]��X�#�'�b(���k��z����J��=�	���?�bx����5#B1�vv������	���k�P���mL��=�5g�|�gs��Y�1���^�/ozE�L��X���r���6��.���]�e��&���M�:x`�
�b�)�P�w!���B�1	 ��B�/�2��e(���P���LD�bJ~�����U� ��S���c�(�*���E(�c�(R;;���H.G(���"�sow�O�������_����=F�tS���J�)Kg�]*'�p��zaHH��D�a�q2a<Bqj�o �� �3'�_E�<�sEs���� ;�A0�� SH�v ��F(�1+D(���
�P�EcZ�P4�[����u'�C��������������<�H���y�X�_���CN
n��8[0���e�<��R��/������j<�����3�����S��&����/��P���9�@(��I4�@(�#N%@(����P�9���Bb��h��00B��Y!B�mn`�b.���)�������;���Pl��F(����6F�=}q�2��������2<��d�m�N{���H���b9�gs��8�ONx�dYk��O7p�vM*�b
�@��@�IcF�h����!�P��Z�XD���h��(2B����2��_�e�!���[���g�h�2���A(�g�����y�5��#�s����wB�b���^���zY���I�m7+��:A6�>6����w�~?��f���c��(��5^q������kR!k`�D(M3E3���
��
����":veE;�E��Et��!��,
�X���zE�<�DC(����B�?�������wn#y?B�=W��{'�1K�Fr�C���K_�����{:eb�|`�y��dt�����[*�w������wwO5��Yi2B1�_S�fD(��6������B�/O�A��B�q*B1�$��b��$��E3�����x�
�fhs#s�� M�����������\h�bx��������S����2��e�k)��~y������>��R���^�{^<��o�7l3^&M���I<�����P���9�@(��I4�@(�#N%@(����P�9���Bb��h��00B��Y!B�mn`�b.���)������_wB=�����P�����o\9Wn�w����z�Fc��;O���HO{��<6{����O�]{���'������cG��Y"#B�$�*E�
B"���	 ;�q��'�P���B1�t�b�I�=����@(�c]�	�XK#�6B1�$B1!���w'u�������Pl�5@(���Im���{Y��7/��������}r�d�M�I��iO�-���'��	?�#n3~i���?E�\iL�~x����\��"�	��#�L��]��u�8[B1�B1<s��Plw�b8��p�k3!ki��F(�c�dB(&$��#������p����������;����p�������
�8x�~���d�@��-�[f.�s/�7Xw�����"+O����D���+�B1(�8B1<s2�%�P���h0'�P4G�J�PL!	��s*	B1��lB�ma`�b!�B������\4�ES�u�;�����F��b{.0B1<�Nkc��|����bY�h�c��o:V�1=��/-����P~v��Ah[�7F>��d�:�^>V��
�b{.B1<w�bx�d�K���'� `N�h�8���BdB1�T�b
��������B<f�E3�����hL��x��wZg������\\�bx����\s�B��������R����������:8O=�T.�a�\w����{�z����4�8���B1�B1<s2�%�P���h0'�P4G�J�PL!	��s*	B1��lB�ma`�b!�B������\4�ES�u�;�����F��b{..B1<�Nkcf�Y*�^4G��\(�r�"�u�~�o�	2�H���%����$�xd� �#��]����q��}��b{.B1<w�bx�d�K���'� `N�h�8���BdB1�T�b
��������B<f�E3�����hL��x��wZg������\\�bx����,]����'ph��6[>�����������_�����$���_�e�5���1�APl���������/��_�D��9��9�T�b
I�� �SI�)$f;�fh#��"���F(��1-@(����i��u'7�? �sq���wb��[�e7-��/.Jq������'��[����,������>O�.�"}������*+M��>}��C_<����P���9�@(��I4�@(�#N%@(����P�9���Bb��h��00B��Y!B�mn`�b.���)������_w�#�B�=��{'�1��^"_sO)>����8����;��_;A&����.��}Y����q��C]k��#V���}��>Q����5#B1<w�bx�d�K���'� `N�h�8���BdB1�T�b
��������B<f�E3�����hL��x��wbg�	����\X�bx����,Z�yW��[X,//�b(:���v��V#��:�W��P.����L�N�z�����&w���z������bp��P���~	 ��$�	 �� SH��@(��J�PL!1��P4C[�X����h�670B1�iB�o]�N���;������P��S��+n^ ���B����9M�Z�O����t�~�'����r�=�c`cF����~y�.2~l�Nw�'�P�7����#�3'�_E�<�sEs���� ;�A0�� SH�v ��F(�1+D(���
�P�EcZ�P4�[�S;��Nr~@(���"�s��6f����������-����%{�j��}���3K���/��L�D}��d��������E����!�3'�_E�<�sEs���� ;�A0�� SH�v ��F(�1+D(���
�P�EcZ�P4�[�S;��Nr~@(���"�s��6f��H���yr�}�E�@������w�~@f�]&���%y���Ke���59�utB1����@(����3I	 
��T�c"��X�"���E(��Y�P�I�|,�byV>k"}�,�X���ZE�D��ujg����b{�#B1<�Nnc.����[+1��t��F��;��O!~��y�t�O��}��� �G��Q��E����!�3'�_E�<�sEs���� ;�A0�� SH�v ��F(�1+D(���
�P�EcZ�P4�[��;��Nt�}@(���"�s��6��G�O��/�=�|�S��o:NV�6Z~r���>�8c�����O
������4� =@��X�;�B��.	'�b�b>�E��c"3���P�������z/B��pv|�b6��EK�����l|�trg����I�������;��yi�2���Kr�=��F\k�>������_���O|�Fc�M	����&�y8��b������q�wI8!@(��(E(ZPm����E
������l.�{�����#��X�E(Z����P�g����;�}�N��Pl��@(����m�e7������<;g���*������u����}^=^}�������Pl��C� V�P���G��q���@1�b1�R����1��Y�@(ZP���P��b��hM8;>B1���^��%����|6�K:�������x��\	�bx�������"��
��/��t8�IF�ao�(��b������Pl�eA(���P���~	 ��$�	 �� SH��@(��J�PL!1��P4C[�X����h�670B1�iB�o]�N���;�������P�����9�����~I��cQ&�&����,�>&���v"�sE���#�3'�_E�<�sEs���� ;�A0�� SH�v ��F(�1+D(���
�P�EcZ�P4�[��;��Nv}@(��b"�s��6F�=������y��=����
}r�O��q�jww�6B�=���;B1<s2�%�P���h0'�P4G�J�PL!	��s*	B1��lB�ma`�b!�B������\4�ES�u�������G��b{.$B1<�nhc���Er���?���tt��k����3EF�B(���������
��9�@(��I4�@(�#N%@(����P�9���Bb��h��00B��Y!B�mn`�b.���)������_w�#�B�=��{7�1��]*_�@�p��u�����7#�oJ��N�����:��������/��_�D��9��9�T�b
I�� �SI�)$f;�fh#��"���F(��1-@(����
��u'<B> �s!���wC�tY$�����)����AH�F�>����v�����\!�bx�������B�/O�A��B�q*B1�$��b��$��E3�����x�
�fhs#s�� M�������!������������M{z����G��=]iJ��g��i����5���$�C(�����M@���"�P�����@�1�bcF�k }-�X���ZE�D��!��X� -���F(���*A(Z�-��P,����[:�}~�N��Pl�U@(���-m�S�/����@~���iOW[�O>v�$Y����5���$�C(�����M@���"�P�����@�1�bcF�k }-�X���ZE�D��!��X� -���F(���*A(Z�-��P,����[:�}~�N��Pl�U@(���-m��%�\u�B��������=]g�>9��+���������Pl\��![����&�qHG@(v���d ��B�1#�5������P,��w-��o�����l,K��t�c#��X� ���E(��Y�-��>�s'�B(��* �s��6���,_�@f>�T���b�1��CV�Q��sk6#B�Yr��Pl�_3G#���1�D��IW�s�@	��<WA(zZ2B�$(������C(�1,B(�-�P,�cT�P4� ,B� �������k�=B�=���{7�1O<�D��ya<����Q�������Z�-�k�P�b��<��$8������	��5K.��������g�)O<��s�1�����o������;���C��.]*��V_S�Li= J�Y����ce��	���R��z�)Q����+��u��������O&M����/����\��?>���Ow�����?.��-��V[M��7b�W'����Q�����'w����s��"�-������G�w��/�m��-�Z}��e��1�v�#�|��[��G�-'N�����������%����6f��H��w�\|�Rp���i�>y����������k3i_��y�o~���������'����1#����8���@|���&5 ��B��t(���v�U:�#�<RN9��J�P� @� @�{	���W\��1�x����^*���|=���F�9 ����A�� P�B�,)�A 0��zH�;��T�k��F���#;��S�Qm�7���r�����b��(����JG��
C@Gm�H9�a�O)�
C@��U�:����u��>)�O1��umte����
�f�%c���@��������eO ic4�_�y'��/�1	�wmS�m���"Bg�����;Q����RK�~;����]�w���f��6�)���������=F��ia8����-���"Z.�>u���-�x������_W_+��k��w���S����������|��A�5�_G�y�={v��������@�fd
��\x�P��5�������4�m��b8�I&�:L�����UW]5���1�P4\^��w��s����5p7YC�nAh�P,�cT�mm�����
��,��"��['����z��5����e
����7��w�G�f�m�j������|�����6�Pl���B�k������U@(zCY)B�.o���P��P,��kE��W���������tQ!B�=��{7�13�\,��\$�����7E(������������/��_�D��9��9�T�b
I�� �SI�)$f;�fh#��"���F(��1-@(�������u_�K? �s����wc3o�2yn�2Y{�1������"�&G(6	����-���� �P����I@�<�byV�j"}���X����E_$�A(6fdQ�hA�qL�bcF�k }-�X���Z�����{�;B�=W��;mLX�����l��D�w�b8�d�!�P��JT�@(���
�P�EcZ�P4������{B�;�R��0y��P���a@�bCD&�&X3������|'B�qf�b&���1�xS��)$Av �`�K�P����.$�P����)�6�b���P�\3"����;B1��L�Z����X'��	����p�����6B��F�m�b8�I&���D�w�b��� ����P�gL[E[�D��wE�HD(6DdR�h��aP�bCD�* ����X	���Eo(KB(�F��"B�+��`t��1+D(��-�P,�cRHc�57(B1�iB�ofp�b&vv�b],NJ������fD(��;B1w�b8�����4�m#��N2!a���x���um&�b-�p��p��L�1	�0��0��gA('b��h�����|�����6�Pl���B�k������U@(zCY)B�.o���P��P,��kE��W�����/�cV�P4C[�X����6�knP�b.���)����L,��"�.�X�*�B1��B1<s��Plw�b8��p�k3!ki��F(�c�dB(&$��#����?��L�Z����X'�hca��a8��PN��3B��1l	 m��	 �#m���I��	��A�
y��P���R �b%\�*#��,�X���E�8���_����h��00B��I!m�	����\4�ES�����X��E�]t�8U(�b���bx������p���X�fB(����P�:��PLH�}G(��Mg8�����4�m#��N2��$$��#�p��8���g��=c2�@(��%:�@(zG�0 B�!"�
E�
�""�V��
e�@�J��UF(zCY:B�4*��^q����Y!B�ma`�b!�B���A��hL��x3�#3���� ��bq�P�����5#B�=����#�����P��n��u�	�����P����p�k3!ki��F(�c�d��IH�yG(��<<Bq8��E{�d�%�P��Ktx'�P���a@�bCD&�&XE(6D��B��J���py��P���t �biT^+"��,Fg!�B������B<&��1&Xs�"s�� M�fG(fbag@(v���T!�������kF�b{�#�qG(�c]�	�XK#�6B1�$B1!���7���X�fB(����P�:�D����P�yx��p"������`K�h����N��i�����L* M�6�Pl��[��7��!+��V��
e�@����VD(z�Y���B<f�E3�����xL
icL��E(��1-@(����P����."�P�����B@	 �� �3����pG(���P��6B��F�m�b8�I&�bB"�;B1o:������P��n��u��6&!�����,��D�?#����B��/�!��B�;���
�T@(�`m����
Eo(+B(V���2B������Qy��P���0���x�
�fh#�����`�
�P�EcZ�P4�������]D��E�S��@(��;@(�g�����P���um&�b-�p��p��L��D�w�b8�t��c]�	�XK#�6B1�$mLB"�;B1��Y����F(�3&�-��-_�C�;��w�
""2��P4��0(B�!"o��PV
�P���[e��7��!K��Z��ga0:���"��F(�1)��1��������h�738B1;��B��.�
%�P�w�P�\3"����;B1��L�Z����X'��	����p�����6B��F�m�b8�I&���D�w�b��� ����P�gL[E[�D��wE�HD(6DdR�h��aP�bCD�* ����X	���Eo(KB(�F��"B�+��`t��1+D(��-�P,�cRHc�57(B1�iB�ofp�b&vv�b],NJ������fD(��;B1w�b8�����4�m#��N2!a���x���um&�b-�p��p��L�1	�0��0��gA('b��h�����|�����6�Pl���B�k������U@(zCY)B�.o���P��P,��kE��W�����/�cV�P4C[�X����6�knP�b.���)����L,��"�.�X�*�B1��B1<s��Plw�b8��p�k3!ki��F(�c�dB(&$��#����?��L�Z����X'�hca��a8��PN��3B��1l	 m��	 �#m���I��	��A�
y��P���R �b%\�*#��,�X���E�8���_����h��00B��I!m�	����\4�ES�����X��E�]t�8U(�b���bx������p���X�fB(����P�:��PLH�}G(��Mg8�����4�m#��N2��$$��#�p��8���g��=c2�@(��%:�@(zG�0 B�!"�
E�
�""�V��
e�@�J��UF(zCY:B�4*��^q����Y!B�ma`�b!�B���A��hL��x3�#3���� ��bq�P�����5#B�=����#�����P��n��u�	�����P����p�k3!ki��F(�c�d��IH�yG(��<<Bq8��E{�d�%�P��Ktx'�P���a@�bCD&�&XE(6D��B��J���py��P���t �biT^+"��,Fg!�B������B<&��1&Xs�"s�� M�fG(fbag@(v���T!�������kF�b{�#�qG(�c]�	�XK#�6B1�$B1!���7���X�fB(����P�:�D����P�yx��p"������`K�h����N��i�����L* M�6�Pl��[��7��!+��V��
e�@����VD(z�Y���B<f�E3�����xL
icL��E(��1-@(����P����."�P�����B@	 �� �3����pG(���P��6B��F�m�b8�I&�bB"�;B1o:������P��n��u��6&!�����,��D�?#����B��/�!��B�;���
�T@(�`m����
Eo(+B(V���2B������Qy��P���0���x�
�fh#�����`�
�P�EcZ�P4�������]D��E�S��@(��;@(�g�����P���um&�b-�p��p��L��D�w�b8�t��c]�	�XK#�6B1�$mLB"�;B1��Y����F(�3&�-��-_�C�;��w�
""2��P4��0(B�!"o��PV
�P���[e��7��!K��Z��ga0:���"��F(�1)��1��������h�738B1;��B��.�
%�P�w�P�\3"����;B1��L�Z����X'��	����p�����6B��F�m�b8�I&���D�w�b��� ����P�gL[E[�D��wE�HD(6DdR�h��aP�bCD�* ����X	���Eo(KB(�F��"B�+��`t��1+D(��-�P,�cRHc�57(B1�iB�ofp�b&vv�b],NJ����
��@IDAT��fD(��;B1w�b8�����4�m#��N2!a���x���um&�b-�p��p��L�1	�0��0��gA('b��h�����|�����6�Pl���B�k������U@(zCY)B�.o���P��P,��kE��W�����/�cV�P4C[�X����6�knP�b.���)����L,��"�.�X�*�B1��B1<s��Plw�b8��p�k3!ki��F(�c�dB(&$��#����?��L�Z����X'�hca��a8��PN��3B��1l	 m��	 �#m���I��	��A�
y��P���R �b%\�*#��,�X���E�8���_����h��00B��I!m�	����\4�ES�����X��E�]t�8U(�b���bx������p���X�fB(����P�:��PLH�}G(��Mg8�����4�m#��N2��$$��#�p��8���g��=c2�@(��%:�@(zG�0 B�!"�
E�
�""�V��
e�@�J��UF(zCY:B�4*��^q����Y!B�ma`�b!�B���A��hL��x3�#3���� ��bq�P�����5#B�=����#�����P��n��u�	�����P����p�k3!ki��F(�c�d��IH�yG(��<<Bq8��E{�d�%�P��Ktx'�P���a@�bCD&�&XE(6D��B��J���py��P���t �biT^+"��,Fg!�B������B<&��1&Xs�"s�� M�fG(fbag@(v���T!�������kF�b{�#�qG(�c]�	�XK#�6B1�$B1!���7���X�fB(����P�:�D����P�yx��p"������`K�h���h���0����L��'���>*��l���u�o�q,�v��eK�.�y���qVXa�����-�Ck���200P� j�L��'��E�����
��i��
�)���'�'O.�L�7�\��?^�����%P1�GyD�-[&k����7��2�^hG�v��5J�L��%&AX�`A�����O�0���h���)���k�5��1c�4������w>z�h�4iR���m��]��.���=�{����_�����b��}]����Y��n�[3h[��c����^{��? L��,z��~��@(�%E=&�#���n�JY�<�H9��S*Ce@� @� @�-���Z��fo��o�P��k�7�f��)*��n���x��6�l#S�N�+�w�}��������	DQ?�����:��t����Oo1��,�����g������:���YG'�h@��+e����
��W:�Y�=�'���y��h6~��a�Y�6��/���MIf�8q"�a����ot~���4:������%w��p�5S����gX��-ayk6����.��'���t��i��
_
��,�bYR��@�`
��B`��=;�G~����O�G3��b{.<k(�����X�fb
�Z��YC1�$k(&$����b8�*o����8��[n�4�����b ������0 >���\�B��9s������Tc�3�P��D8�P,�*M�������@�B1��zB��pv|�b6��Ek�C��C,Bn!C���Pbj��t}�b=�Ot�[����P�gcY�P����6&���^������b>�E��I��6� ��B���!��y��P��b�bE`-TG(���C�-�k�P�b��<��$�C(����t�W���*B�#�
��`y�J�	d�0���<WC(zZ"B�$�t4�bG_Ni�4�=Ek�����\��"�	�G(���PI{(Bq�E�-�b(��y��<,?��oI7?6B1��e	B��nvl��l.V{�Vd��"��X�"-�3$�bH����E+�@(V��:B���a���P���E(���C�-�k�P�b��Z<��"�
���_���E�0+�B(V���*m�'�%� K��\
��h�p������}y89�	 �L�� �	g�G(fs���P�&<�8�"�B1$��\�!����H��A(����Dg�%����|6�%EK���ic��X�E(Z�-��P,�cQ�P��J���!i� =@��X���EO +�A(V�Bu�b�Z8���E(���C�M�k�0�b�+NgX�"=��
�X����1�@��P,	�s5��g�%�!K@�JG@(v���� �&�PL3���P�&�����z/B���P|����[����r!�X��B(�"]��X������t�c#��X� -�f�����b��hE�8.B���E)B��*1C@(��M.x �P��b�bE`��#=���XX��-�k�P�b�Z8���&E(6	����-�p8��`y��P��B(�bX����xY2B�$(�������P,�*M�������@�B1��zB��pv|�b6��Ek�C��C,Bn!C���Pbj��t}�b=�Ot�[����P�gcY�P����6&���^������b>�E��I��6� ��B���!��y��P��b�bE`-TG(���C�-�k�P�b��<��$�C(����t�W���*B�#�
��`y�J�	d�0���<WC(zZ"B�$�t4�bG_Ni�4�=Ek�����\��"�	�G(���PI{(Bq�E�-�b(��y��<,?��oI7?6B1��e	B��nvl��l.V{�Vd��"��X�"-�3$�bH����E+�@(V��:B���a���P���E(���C�-�k�P�b��Z<��"�
���_���E�0+�B(V���*m�'�%� K��\
��h�p������}y89�	 �L�� �	g�G(fs���P�&<�8�"�B1$��\�!����H��A(����Dg�%����|6�%EK���ic��X�E(Z�-��P,�cQ�P��J���!i� =@��X���EO +�A(V�Bu�b�Z8���E(���C�M�k�0�b�+NgX�"=��
�X����1�@��P,	�s5��g�%�!K@�JG@(v���� �&�PL3���P�&�����z/B���P|����[����r!�X��B(�"]��X������t�c#��X� -�f�����b��hE�8.B���E)B��*1C@(��M.x �P��b�bE`��#=���XX��-�k�P�b�Z8���&E(6	����-�p8��`y��P��B(�bX����xY2B�$(�������P,�*M�������@�B1��zB��pv|�b6��Ek�C��C,Bn!C���Pbj��t}�b=�Ot�[����P�gcY�P����6&���^������b>�E��I��6� ��B���!��y��P��b�bE`-TG(���C�-�k�P�b��<��$�C(����t�W���*B�#�
��`y�J�	d�0���<WC(zZ"B�$�t4�bG_Ni�4�=Ek�����\��"�	�G(���PI{(Bq�E�-�b(��y��<,?��oI7?6B1��e	B��nvl��l.V{�Vd��"��X�"-�3$�bH����E+�@(V��:B���a���P���E(���C�-�k�P�b��Z<��"�
���_���E�0+�B(V���*m�'�%� K��\
��h�p������}y89�	 �L�� �	g�G(fs���P�&<�8�"�B1$��\�!����H��A(����Dg�%����|6�%EK���ic��X�E(Z�-��P,�cQ�P��J���!i� =@��X���EO +�A(V�Bu�b�Z8���E(���C�M�k�0�b�+NgX�"=��
�X����1�@��P,	�s5��g�%�!K@�JG@(v���� �&�PL3���P�&�����z/B���P|����[����r!�X��B(�"]��X������t�c#��X� -�f�����b��hE�8.B���E)B��*1C@(��M.x �P��b�bE`��#=���XX��-�k�P�b�Z8���&E(6	����-�p8��`y��P��B(�bX����xY2B�$(�������P,�*M�������@�B1��zB��pv|�b6��Ek�C��C,Bn!C���Pbj��t}�b=�Ot�[����P�gcY�P����6&���^������b>�E��I��6� ��B���!��y��P��b�bE`-TG(���C�-�k�P�b��<��$�C(����t�W���*B�#�
��`y�J�	d�0���<WC(zZ"B�$�t4�bG_Ni�4�=Ek�����\��"�	�G(���PI{(Bq�E�-�b(��y��<,?��oI7?6B1��e	B��nvl��l.V{�Vd��"��X�"-�3$�bH����E+�@(V��:B���a���P���E(���C�-�k�P�b��Z<��"�
���_���E�0+�B(V���*m�'�%� K��\
��h�p������}y89�	 �L�� �	g�G(fs���P�&<�8�"�B1$��\�!����H��A(����Dg�%����|6�%EK���ic��X�E(Z�-��P,�cQ�P��J���!i� =@��X���EO +�A(V�Bu�b�Z8���E(���C�M�k�0�b�+NgX�"=��
�X����1�@��P,	�s5��g�%�!K@�JG@(v���� �&�PL3���P�&�����z/B���P|����[����r!�X��B(�"]��X������t�c#��X� -�f�����b��hE�8.B���E)B��*1C@(��M.x �P��b�bE`��#=���XX��-�k�P�b�Z8���&E(6	����-�p8��`y��P��B(�bX����xY2B�$(�������P,�*M�������@�B1��zB��pv|�b6��Ek�C��C,Bn!C���Pbj��t}�b=�Ot�[����P�gcY�P����6&���^������b>�E��I��6� ��B���!��y��P��b�bE`-TG(���C�-�k�P�b��<��$�C(����t�W���*B�#�
��`y�J�	d�0���<WC(zZ"B�$�t4�bG_Ni�4�=Ek�����\��"�	�G(���PI{(Bq�E�-�b(��y��<,?��oI7?6B1��e	B��nvl��l.V{�Vd��"��X�"-�3$�bH����E+�@(V��:B���a���P���E(���C�-�k�P�b��Z<��"�
���_���E�0+�B(V���*m�'�%� K��\
��h�p������}y89�	 �L�� �	g�G(fs����N;��w�)]t�������z:>B�=����k����h���e���n�I�XV�b{.8B1wm��Zk�8��w�-���N��=�	�����P��6&,s�bX�I6�bB"�����o�r�-���>��L�:5\r2A������@H�����B(�g������1�^z�p��9���Pl��F(����(�h����D�^�����2 ������|��iq��zH�]w]�DD�#�P���B1��D�1�(�l �`N%A(����x���e�����<���Es�$�M���(�F,�;��C.����#�������~�h��d�=��]v�E�O���'���\s�����Ar�z�b{������1E{�E{�Y�YT��!���PN$�g�b�����p�k3!ki��F(�c�d��IH�yG(��<<Bq8��E{�d�%�P��K�B������~��r�}�����x���2q�DYu�Ue�����?\6�|s�o�t�#�Q&@(���P�{0Y�� ��m ��F(�1+D(���
�P�EcZ�P4�[���:�> ���K�P���mL��I��(�n ����!�3'�_E�<�6�DQ$,��:H���Z�b�-d�}��M7�T��������e��qr�q��?��X4ZbH:�����c#�y���PE�>O�� ��X|B(ZPm����E
������b>V�E+���t������PA9���fb��6��p}|�b=�P���H�A(�`�;	 ���q��,Y�Dn���X(���jr�	'��_�zYe�Ud��E2s�L9���D;����7�)��b�vG���P�G�� �����P��n;ic�������2 ����C(�3��8�H���0�5���X�fB(����P�:�D����P�yx��p"������`K�h���]N@;{���/�g�Oi���}NV_}��o�O0����/��2~�x��g>#{���`��F���P�����G�e�����{��������/�K���+���}�v�a��0�@�� ����{�m��7��MYk����O��X���������x�����-5)�I���f�X����u�Y��J+��e�E�V	��g?�?���:��rH��8����p���P��t�M6������]K@2�~�����{�Q[���#�9a��N�7���@F�����f�>e���B��1�	8!��!����\gc4f���?�A�F�j�u�]���m����M�r�;��f��5���C/���������
95�mA���N�������O�I��bN
v�"���=W����6E�k�+�7T����������|�u�	��,1���1w}�eK�����Y���C=d�����L����{��aO`�������_�OF��mL�?����������-W����
C@�(s�O�^�6�m'��B $��m�Y�����#��b*��O?{����i��O}�S�r�;��~��o�����l,K��t�c'mB1�����/��� ���U���d�8���|�D(��Y���b>V�E+��q��|,Jic,���D(���,A(Z����P�����!�P��k�������"r�%F�F����������:7�{��O~2rS�FG}t���������l~<�b>���%���I�P�g�����d�8�j�|�F(�"Y>B�<+�5�>i������U)B��lq\�b1�R���1��l,K��t�c#����{ ��Zq�m �? 'L�?����F��-K�����#��b�����*��#��G(�&�������hI7?v�� ��*A(�"Y-B�/_���H���P,��gM��O�����/�cU�P�"[�X����6��j~L�b>���%����l.����T���� ���{BQ���2s�LY���=�XWs���r��'�i��/b���|����������lTm�����]���SO�-��rp?v�?����~T��/�KD�:?��O�E�w�m7���>TW�;I��p�v��.������q���������H _�����9��C��xG�������/�?��}����z�$����[N8���������I�.�����+e�}��#�8(��L1��w�+�p�������j���	����Z�����[l!_�����8������o7�Y��o?�l�W�1a����
��w�+�������{��G>������6y�f{��g���������c�8qb[I���>2v�������B���g��
���^[���������[O��,^~��X(j�v�w�yu��>|�#�s�=�Q5�!@� @� @^���e���^b�7 {�:�-�$���/��[o-�>�h�$���n���uN9��'����[�<��J��~������~Y�p�l��2i��J�����<������� U��SO=%O?��L�6-��p@S�6F��sS6����?�����~�d�M�D��	<��#�7M����L�>��x(G@gdpS���o,n:�rQ�%����g����o�yK�8�<��\f��-+�����1�����L@g��'q���f���q�*�����{����X���p�
������9s���5�X#~��� T�mL%\-W�5k�<�����L�Z��M��]k��d�W�v0��"�h�"��?��3��=��8�����e������t����)�p?��]v�%r�{t���G���I�����#�����M{�*��#Y��5}������l,KXC��n~���a
�|F�JXC��jqXC�/_�YC���qXC�<+�5YC�'��X�oV����5���e
�b>��1T�c��b>��P����5����{H��*g
��T }�����u�"7�8u7�xc��H���G?�Q���������l~<�b>���%���I�P�g�����d�8�j�|�F(�"Y>B�<+�5�>i������U)B��lq\�b1�R���1��l,K��t�c#����{ ��Zq�m ��G�.���h`` z�k_=�����p�Gnj�h�=��n���T��Ig?B�7��x�|6�%EK����6����W	B��jq��x���P�E�|�byV>k"}�,�Eg1�R������b>��1T�c"��X� -�f�F(fsao�@(v���L�@�����H7�x����:����C�S��u���>;r�]Gn-��#�H4w�\��L:���� Q�@(�=�,ic��H�6�fh#��"���F(��1-@(���Ng�`��P�%B(����6&��$�AA7�Aq�������/�Q����;B������O�3�<St�\]����_�l�y�������nr�������*}}}��*}���n+w�q��N�8_���4��o�]��n;q����/4�����?/'�|�������_�`j7M ic���8��8���e�]&x�8�+���
C�}�{���?7hA�������S��_7HG���eO��k�����:��[��>!bn���{������s�9P1$����M�gp�s�f�1�F����.?����uB��3������_~�8�"����'@c��6���y�q�q�_%���c^w�u����'��'����[o�8�� z���D��MW�sm�Y�f�%�\"���2��g��Tb�����w�p�8q��9&��Es��	,X ����=Z��j���l�x���D�[q�e����MF�AI�PDb��rE;@���M6��,��	<��#��s��������K�dE�hE6?�|�9s����e��7��H�W�?�����*��"3f���`�����������N�4I6�p�Pi{>��f�����h����m�=���o����-�m������E���'�P�gL[E[�DA��I����4~RQ��[[QV^y��?��J:��!h��G ic��w����$�P��Kl�&:�{����!�mL(���@o@(������8�*�iDH:��#�2�� �6I�Pl�% 1F$�����|)����m�Or�x�1#��!���`'�GE�0	���~�b���@�H��b�]{�1,	 -��I������|k�"@�4y �[��u�G��E(����w���~�����|9��@�� �v	H�I�8"/+_
m%@g[��#�m����|A��B�-�I��B�#LBA �����69 �{�6��{��oKEK���@o���7�;�����"M��bo]���m�#����F4�3�<S�q9��ce�
7���/�'��1Gq�l��V�O�����$��OZ,X ���'d��#�;�� ���M��E_'�x�����aO�l���&@3�//_m#��s��)���?���e��	m;C��f�q @� @� @�z�B�G.4_� @� @� @�@(6C�c @� @� @� �#�=r���� @� @� @h�B�j@� @� @� �!�P����� @� @� @�@3��P�@� @� @� ��b�\h�& @� @� @��!�Pl��@� @� @� @�G {�B�5!@� @� @� ��b3�8� @� @� @=B��#��	@� @� @� �f ���1� @� @� @����|M@� @� @� 4C��5�� @� @� @�@�@(����kB� @� @� @��f�q�@�����x@f��%����1c���+�(������1C�pV�������s�����<��#��/���Ke������+�l ���N�k,\�P������?�*KvL�4I����%y�z���E����o�{�������}�K�?������K�x�	�6J_�'O���o�i����a ������7K�o��w�S��W��/�����%�x��z�[��W�~@`����������m��V6�p��o���/�����3E�h�����7�1��Olojh�c�=&=�P|������UW]U6�dYe�Ud������
���zk�_��n��mD����D���y���D���c���<���~�'�}4�/���Yz�U���TT�2�"�P�E�80"�l�2y��G��?����������?��G�������u��~����o/S�N5:�B�J@#\����_�Jn����G��0��{�)~��K����:��5jT�UU$~���_����_]E����&����z�|�[�*EQ]��K����+���n�M����N�W����7�Y��k/Y}����� �8�����K}Yd�.����������_��������f���s�St%��q�i���~�3����$Y��T
�t����E6��AOz������M�>m��u����#��r�\r�%������]�t�Me�=���:(��J?t%DNHx�������\y��q�������������{����.n[^z�%�0aB,��<0���A�I���[_��W��3�L�������A�������Y�B��\�7o��t�I��o~3��O�?*��#��2���������y�L@`$���/�P�;��x���������7m[�fW����}�k��������~�;9�����m�Q�D�p&:��������|�z�����g9���E���m��V����]v���%K����s��G�k��m��8?��3����'�>���
�k����!���_������x���>HZ����q�v��KB�x���d��/Yl:(��_�jn|
 ��E@�L~���}*:X�{��^J(�@�;��S���/��nYs�5E����T>������O�
��}�s��V[��]t�}*Z%�����Z���k�O'����S*;���_G�&�`dQ��@��$���q����`��BQ��?���q�)�7���'���Em�������.������J�/����E�Z����[W�o�6NX��:������'r7����+r�^������%���������L��?���D/��b�~Nh�db��7�1rS{E�x�;"��b�nh�6��{�������(��Cq����<��������>������� ���E]����=���dw���i���v�:��C=4��o~=����Y]u�U�>����W�:r��0��@�p�"7at���Fn�e��u�`�:�#���������� �[\g��/����� �h�5������{�PL�p�/�_qO#Fn���
:���H�d���3�����^~��EN�1��I�O�2%���}4n�f�`���-Y9����J�q�����R��t
7� ���MC���}����Y�C��r�GDN�E���{�f���mC����.�^��WF������~w��8d�7D;��C�{������!�^� ��T�u�Y�?Lo}�[Sk��
�ivSh��������@�h��%�i�#�Q�4�(���s�����n�n\Go��t�����>��XB�f �����6����������������
n�mt����U��*^��WEnJ�Ho�yAHh��7�t���=n���(~�{��?<��e�g��+� �;T��s����O�u�C_;����{B(:���"7kB��?�_:���@<���������q��o�9����MMXw��Yz���0rO#E����������@��h�����b	����Gn��\�����f�m��[#7-j���A��o��������h��f��f��Q�^+3;!��B�3P�A�'�av����0�H7}2q��M�?�����!^�n��x�����H��
����k7��C���������?�aV��O	��Q�r���4�����z������?���
�'?����_G�j;���F���v�����L;�j���O��v����
�8mS��a�[�,�A	nM�:"���n������w�Q��_�I"~��!�F,��@��'u��[�,~
(O(�z����C����_�:����^�[����
7���}:k�.�����2��'�)E���w_fvB�A��;����E���}mt��7�����Pt��F*uf��P��V���������#7u{\�O9������*�Z�q����Pt����N%��5�}��G����~����K�/���(��N���?�������@���RC�h�x�����o���~�1�#�x��_�zq?|�5A���.(^�U��z��%Ys�L>�@#����+^C�M�������:����J�v����:��~���R�zgn����x}�Z*�������}H�T�q��r�!��$�:D�5��>�lq����mOj_��i����\�~�����7(3^�l����������ZplC`p�=���4^��
���u�w��~�k(�Y��#�����'?]�u���@y����#�:�n�x=�SO=U�oq1E����{+�4S�������7^���@������
7#�h��k����7��<M��X�k�����7�)^oU�C���=-n�qOZ��������>�f-C�:�X�J�B���:���?|<�_�&��iQ������w��^����u�0mct�l�^�NI���[���$k�h��?�����#}��� 0��������Y����N��'�/]�U����/T[��.�.���h��1������&mt�!}zY��z�P�]W���/�]���
��~����&D�5z��N����{�r%����e����k�}�i���u��cj�u�}"IggHf��iN���W�}3Y/�����������z��:����<�IC]�A�}�Pl�����:��N��/��y�=�,u��5+LS'�A(I�)OK���A@���E��&�k_�����k�$Q4z���=�8����2	��rG����2��D_'�|r<W����F�����7�.�j��c��1��3g����N@`d�5=6�x�X�����E�E�5[O8���m��9�4c�����:������|p_-)�I�N=����� (����+z�{��n�����y_�S��'��i�u��v�%S1�DtO��_v�a��7
d!��K@�NT&���	E�U����K�:�u
BL���t��t]D�����~w�@���I�����:ky��j=^�@�H���3mE(� ��w�9��T���������?�U�glt��S6g
��=G�!��B�'MbA�3��z(�tS����j'��G��,�x��G>����@.m7Tt�A���.��%m���������[�'���O����'�����n���<@#���?����w�}��$h'[�NhG�BH~�w�q����/]�Y��S�I�SKI��iZg����-b�Q:JG���1#��w�Bd��7u��GG����fI�%m�����SD���jt�Yge�`' 0r		��.�,~�Y�h�����H�u��v��Kb�g�o*:N��>=}M�O0e�� �� ��P�{��:J�N<��s"�}��#��rJ�T������^������w
���������N%�sp����cN���n~S�b�h��G�����a'_���:��p^�@p?\��D����,��M�Uq#m�����p|�n0���r��J+����F���������ut
��n�������'������$S�L��%r������v���u��4������� q�M](nP�����s7�����Zg�n���s�=u�|�z���.qS��{�Y\�}��ex��Tt�!7@*�����+�����n�������S�����z�������������mo�w�1^�M����m�������'���uMh'�
��.� s}V7�!���5k�����{�Tpv@]K@�N����N��\��N:I~��_��?��x
E�{I~�<����m��I��-�%E�Z�m�Y�n��W]���.���^�m�p��������M#&n���Qmu�!������?����^���L��y7�Mn��vqO���n������t �JD�)_c�5�Mq�[�@�7	�tS
��V9��m�����A��o�~����oOu����qg������N�:"�	�o
��� ��z���;W�����^{
�U�H��8@tp�t���"���_�:��[m������-=���H�#����zY9��x������-o�%���S��`�m��F�l
��L�c�; ��%PE(�Lt���m������<0�=����H����;�.�'%��� ��$����oz���t4��[o����V>��O�o�[qk(�[;����z:����/��?�?��)�O<1�f���u���_��qk�������@���`��zc�7���B�����������S����0���K�����-h�/@�w	� ��~���o�����w�Y[�!����������A��@w(�W_}�q�q��OCgu�� o���3�����+���|o�O)j���o|#l9���>����C^x�����^���@(+�E�m+~��_�[;Q�>��x��*2QQ��k��{��7���b��z'��y]���VO?�t�~����������������~��m�����?�������u�!][�M=�zf���?r������:r�od�;���H�����~��8@#���~��x�7�6r0�EuM]���En���������n:�����l����u��19�s�1����7h)r�&#]�P��dm�,��~zt���GND�f����U�v���#�4��b>C#�@����_#��`���[F�]w]&	]�P�w�i�����=}��
o��d��T����R����;�
� �.&Pf
E�
��O���wFN@Fn��H�s�`��o��e����@���Zo�q�of�a',�EPbB~������'����z�c���?��"�_�'�IDAT��b��(��t@�rv@�M�=�����m��6������B(�����3��H����N8!rSEn�T9; ��O�M�M�>=r��Fn
��vk�F:8A���G=88A�l��������=��:Nc�`*�VH�v�*��)������5���,+��������'>���������TN�5���N;-U�@`d(��)��}�{_�� ��8��L�n������=��w��q��Gn�����}����<N�������p��Y���N@�{	4�n����K.�����["n�,t�_�=��G:(�������/.L@!Z �Pl�B�����0��������H����h�v�zG����s�G+��b�Y��S�+B|t���mnZ��U�zU���}-r��5�]tQ�$�[C$:�����n�i������W��������h^�@�p��Fn��h�
7��(L~����:�����q��'
u�2�������Pa��l�n���x���y�����+:�����:} ����H��!�����l�D����B�������_?r��F\pA�O<k��O+�}��Ki�����/�E! 0�	E���1��L�����+�z7Ea�~�W��_��+_�J4k������3��M���� ���{.n{����/�e���4r����0���� ����VQj���[;5��&}BYU�eg��3g�����y������ki���RA�OXC������z��������Qx�9���7q?�e�5��������M'���k'���H�����&��?�I���/���^���k��Q��D���x=3�'ndn<���7�O��H:I�z�)q ������O��2n����@#���t����k���@���[��d��Q�����w��Fy�������H-s�����|F���0aB����]7�����n�A�`q���g�)nj��	�o�"�$���dn���N��~(�@]���������h���5�yM���3��mt-i'��#�7�;�My ��J�h
Em'�7��ZY�����W�"�{q���	Bq�@�@'q��$7=��=ZtM4]���#n�e�>��=N<�k-�Y��
��'}��_7 3��3B�� ����P�������h��{(D���\NnI+q�1��r��uZ�C&��Zn�����{-^A��29 �7�_���x�o��Y|���1c��[_H�.7�X�����B&�F����7�)�i�R_��z�������6Z<�Ao���C���
+���u���M�/ ^*8� �G��{������7���������I��r�����>�����(����Y����.k,'M��`�qGuT��Ww  ��#�Q������o�k!��n�I~�����
Fm_t��{z(��{��w,�zf�q(�F�"���V��.��r�N���_��n����|�nV����v�v���?,�ID���.�ihqO;�[�5>N�m��&��;���uxA#�������u��������J:�R�Z��t��Wu������j�����,��Xj��L��A�N4��bI�%[c�%QJ!�rD�"�0��4D����B���&�Tj�����:�y�k������>��y=�}_�}}�s���}~����2e�������2�qx��O���x��DL�b��2��o�����/_?���Zk���[�)���tM ab>��h��1��G�$������T9���T#�S��T]>�������w�b�T-_}���+@	S������Q�����1���q`���Cp��`_�Z�O�: 0y�����tK�{���P�r��n��r�"1�#G��r7n\IU���g����Z���o�����f��Y�n�GIP8��C����{V���~�?�g�|�!'������A�| b`+	]]��5�c�=����:*��@;���%��O�H��c��OMg�|3��~���
�
P
I� @� @� @�+����y @� @� @�h  Pl�jH @� @� @�](ve%�� @� @� @�@�bTC @� @� @����@�++i @� @� @��� @� @� @�@W�]YI� @� @� @� �@@���� @� @� @��" P��J� @� @� @�����$@� @� @� ��bWV�< @� @� @�4(6@5$ @� @� @�������A� @� @� @���@��!	 @� @� @�tE@����4 @� @� @�
�
P
I� @� @� @�+����y @� @� @�h  Pl�jH @� @� @�](ve%�� @� @� @�@�bTC @� @� @����@�++i @� @� @��� @� @� @�@W�]YI� @� @� @� �@@���� @� @� @��" P��J� @� @� @�����$@� @� @� ��bWV�< @� @� @�4(6@5$ @� @� @�������A� @� @� @���@��!	 @� @� @�tE@����4 @� @� @�
�
P
I� @� @� @�+����y @� @� @�h  Pl�jH @� @� @�](ve%�� @� @� @�@�bTC @� @� @����@�++i @� @� @��� @� @� @�@W�]YI� @� @� @� �@@���� @� @� @��" P��J� @� @� @�����$@� @� @� ��bWV�< @� @� @�4(6@5$ @� @� @�������A� @� @� @���@��!	 @� @� @�tE@����4 @� @� @�
�
P
I� @�O`���e��/�,�����} @�<��g���	 @� @`~3g�,�_~yYl���&�l2�S���O�^����2~�����K/T��a	 @�x�	�}kn� @�Xhn����������E�_���B����������i��V�N�ZF��x�{� @����@��ws @���@W����%����M+c����� @� ����%� @� 0/���d�N� @���O@���Y� @������<���e�%�,�.�hy����������"����Xb����>�1��sr�����������krn�:��s����uy?�x9��t�{��x����������~��2g��{��Gy���{.����y��92���g�x�{������89'��3��7s��>G��}2V��v�i��.����9���5�^>j����UW]UV]u��Z�#����?����3��<Gl�9��X�� @��X@�8���#@� @��� ��z��+���L�4�l����;��N����Un��������l��Fe�=�,o|�3��n��|���,]tQ����k��k���7�m���l����
����K/]���?�Y��s�c���/_�����?����/}�������^X���/��1Aa����;���_��+���r�!u.���o��'?���M����>T��~�����|g}������_~y�<�
>���mo+���[������}���e�����s�-����j(�����L�0����}��_����G�b��v*���?�e�]V�:��r�������/(����������^{�a��	��� @������'@� @���)�'N�X������j1�q��K�\�SO=����j�I��7���Z����g��W(.��2e�-�,GqD?8�@1�{	�>�����-�{��K�`���v������5��<�%�1bD9��3j����]w�U6�t���}��5�K`���}��t�I5���B1���.�l+�e*{�5�\S�<����g����k6�|�r�	'�3f<n��p7�����^�����T(�:1��9��SF�9�
��s�� @�C% P*I� @� @`!��+��R
��Xc�Z��v��\rI9��Sj��w��V����.�xc��)�o�}�u�LX6e��t-��r���h�e�]�eC(&<|��_^^��W�����G�����}��7-Ls�}���_
�p��O,���/g�}v������^�{�{�S+W\q�Z�����t�M�a�v�������/~��:����:V��3�=��S����;�}�n�u��mY/����.��R����t������uy����\y���kqK�h*0�n��V��3��97�q���V�8�V^�*?�~!@� @�@#�b#X� @� @`A��i��.�[�7LU������
5���k�YR��;$��/��f�mV��%�K��*�3�<���}��Uv�n(�T"f���N;���u�+	�RE�����K��<�'>�����k��I�������[n)�vX�c�=j�b����2�:v���'���^���W>����{��3�=�N�Z�\�y�*G���~��u���|	)S����^k�8��]�����~I���+9m����^?����q�W�R��5����L���BMh���K/-�x�+z��� @����h
L� @��W�(��/{	�5���<�@���z���
+�P���	 �e���6M ���iI��C�;���d?���\e�U�eC(�r��c���^�~&����������^�{����0���5��#�K0���s��\
�?����	3VB��~�^��H�e�H��}h&������o���2�[lQ+���w$d����������
l&�����n[����1U��S���`��W�s���w @���@q�E�G� @���@�(fo�]w��$��	�~���������U�zU�X�����i���1�q���_�L��@}�k^�����"PL���~���aB��GB��:��[���2G���3�W���~8:a����4�?�X�.mN.&�L����o���V���L �������j��
�<�9�(��?��:^w�u�5��V�	9��eB�|�j��>��9� @�OE@��T�\K� @���T�(���N;�T[������+���l��5����[{o�|��o|�����j/�bZ���n�����}m
"��f�~�6�b*	��rp� -��	��t���/_������n���Z��`�e/{Y
~����_�������Oa���;�W���r���G?�Q9�����;�\���c���y�������K1{&��iC��2������T:�mk�.�����^'@� @���(>Y9� @� @`!���&M����SI�����?&P�y	��v3U{	����?��S
����
�|	s����4�4���0AY�D��O*�(f�TR�6�%�L���O?��GuT��f����������?�c�f����5LL����9��a5�;��������~(.��b�{���y��&F���o�M7�T���?T�<_*&�^,���������q~�� @����@��
�� @���S	{������o
z�����1�R��`�|9(.��2u������u����`���a��W��
��Mk�9��n���r����.����+1GZ���1�����4�������GQ+*S��#� �Z���k��L���7!�]w�U�]w�z��P4���^X[���i*5��1�@�w}*"�_c�����������u��W.�^zim;�;�� @�h% Pl%k\ @�,�O6P<��sj�_�_q��K,��e��T�y��%�{�0G���L%a�A�^��+��������|�L�:u��bZ�f�������H&4<���J�vL�c���k�#�_����+#G�,���Om���3�o��V���p@����^��b�r�!����2����3k�����^_�&�L�����\u�U{��j�������j�B���#�c\�1f��~�eB����]{���_���%u����ge�����T0�< @�Z[� @����
������[v�q���|���
o(K.�d
���3�\Z��P�5kVYk���-��R�����~��Zu�=�������U����7��Me���e�5��A����_�!O8��Z�����V����J
/����Z+�R���v��J���F�*�{l}���	��d*J��i��i������+�����k��<S�:1��{��g�r�-����k��J�3�8�z$�<��S�����/}i��.�aoo�SN9�s�1�z2�A���:u���2�����^�*���!@� @�i(>
�nA� @��M���S�L�!]��w���-oyKmg�@-�8��`�yx��e�v��Neb��&����	����=�^� 2ac���+P\t�E��q�jP�����@2{^|����k����
�z97�w�q����.�o�y�w���s�]w-��~
EsM����x�����0��c�����q$�}�����}��W~���� 2{0&�;���k �*�M6���}�s*/�_��#J���#U���r�m��{Uf_��i�����K.��d������~���1�f|��d� @�h- Pl-l| @�,�O6P��~	�RY�=�$>��#5�6lX��{�{�[��o�~���o���Z��0-D�Z���M�0�\��%a�����Z��PM�`��&����	�&$LK�e�]�V��u�Y�Ej���x��e����U����.��R+�F5!d�)<���k@�P/�L0���	?Sq����GuTm��kG��_���z���\���y����g�z��k�7x�����'O.i��J��+�	c�g�Y���5-^��c��HM�6����O�7 @�b���� @���n��VC��]��f�=�����~�|���E]T�o& �'L\i���FmTV�p��1A��I����&�w	�'��g�Y���o������-�]�
��!M8���|��T�e���V[��}k��F
�r]�TC��1�����p�#!c��VXa����	
�|��1�	s��jMP�`2U�Z�����G]����	W��P��;�(�^L;�T��q������;��Ag���{���^tP�p�
k����	�M�V��L��u�]��n������=��	 @� �J@��J�� @� @� @�:  P��"� @� @� @��V�V��%@� @� @� ��b� @� @� @��(��5. @� @� @��;���@� @� @� @���@���q	 @� @� @�t@@���E4 @� @� @����d�K� @� @� @��,�) @� @� @�h% Pl%k\ @� @� @�(v`M� @� @� @�@+�b+Y� @� @� @����@��h
 @� @� @�Z	[�� @� @� @�@�XDS @� @� @� �J@��J�� @� @� @�:  P��"� @� @� @��V�V��%@� @� @� ��b� @� @� @��(��5. @� @� @��;���@� @� @� @���@���q	 @� @� @�t@@���E4 @� @� @����d�K� @� @� @��,�) @� @� @�h% Pl%k\ @� @� @�(v`M� @� @� @�@+�b+Y� @� @� @����@��h
 @� @� @�Z	[�� @� @� @�@�XDS @� @� @� �J@��J�� @� @� @�:  P��"� @� @� @��V�V��%@� @� @� ��b� @� @� @��(��5. @� @� @��;���@� @� @� @���@���q	 @� @� @�t@@���E4 @� @� @����d�K� @� @� @��,�) @� @� @�h% Pl%k\ @� @� @�(v`M� @� @� @�@+�b+Y� @� @� @����@��h
 @� @� @�Z	[�� @� @� @�@�XDS @� @� @� �J@��J�� @� @� @�:  P��"� @� @� @��V�V��%@� @� @� ��b� @� @� @���?���
��IEND�B`�
tps-head-patched-xact-1.pngimage/png; name=tps-head-patched-xact-1.pngDownload
�PNG


IHDR&H��xAiCCPICC ProfileH��WXS��[��@h�H	�	��B  l�$@(1��YTp-�X����(������"��bAAYu�+oR@�}�{�}s�������sg����i�H����#�G�3���g�t	���+bFE�X����w7"m��I����_������8������0x%W$��(�Mg���V�%�B�T����R�S����&6�qJ*�8��3���PC�b!O @��ON�t�)[A�R}��t����:����c�\dE)@�+����?���KN�d���*��h��a�ngM�b�����kB�A���C�R2$!qr{T����9t�x��0��!fG�+��4Ab�B�Y�<v,�:/���(l���G+|��ibS�_��e~��J���
�7|�BS-��M���Y� >bU��s�b�6�2XC6bI�4~3����`�>��&�V�������!`G(p]^Fl�<?X�#�����qC:�����������c=|a\�B��(�?Z>������	?;X��@��������)���DyQ��8��LNh�<|,@k*�2�������{��A:�;34"A�#��P���r����z� �_�Y����z�e#��3�s@����(���x�2�x�����f�*������aB&\�H�<2��,���b1�h���>��~�:�����<���:	�	7]�;���QN]P?H���s�[@M����P��z�w�~��/��Y�"niV#��6������@F���~d��#UmT]�U���1?�XS�������C�y�
i�-�a���"vk����a'�xxu=���!o��x��������4��5�_�}y�Y�w4`M��3�L�E�3�B�������������.�n �K������>88x�;�@�T��[�s�������\�8_����%��N���X��8W��@ � $��0����`&��bP
V�u`�
v�=`?�
�88���������/A?x>#BB�
�E�s�qB�$	G��$$IG����,FJ�2d��F~E�"g��H'ry��"o�O(���Z�j��E�Q&���S�ttZ��+�
h��G����h�����1c�s�XX$���abl>V��cUX-���5���>�D��3p;��C�8��������M��o�����~��J�'�<	lB"!�0�PL('�"!��{����H$���D7�����9��������N���D�%���I�$)�TL�H�G:E�J�&}PRV2RrR
RJV**�+�U:�tU���g�:���I�$����+�;�M�+�n�g����M��dRQ6Pj)�(�)o���M�=�'*�*oP>�|A���GM��d��
��*�U����R�T?j25���ZM=K}H��JS�We��T�V���^U}�FV3Wc�MU+P+W;�vE�O��n��R���W�P?�~K}@��������\c��E�M���f�&O�Hs��Y�'4�fJc�������s�n-���[+S�Tk�V�V�����v��,�
��]t�nAg���+�u���O�F1G�G-U;����:�u�t�:%:tn�|�e��f���m�}�����M����E��^�h��^���KF��������G�������?``hl 2�hp����n�g�i����a����H`������6���fl`�0����C�%�����?�X����0y`J1u7M3]k�l�ofd6�l�Y��]s���y��z�V���	K,,z,u,���5����V�V3����[�����7[w��6.666WlQ[W[��f��1�1c�c����S�c�����=������7��k66y����c�9�8d;�t�����X���������T�t}u\�����v�u�;oq��Bs������������������-�������{��r���=>z�z�y�y��e������g��x�����x�xs��{w�0|R|��t��r|�|�����v�=gZ33��������G���<Y�X��������@����M��L���j���]���!������6`s����P��y�-a*a1a��������&�B'��p?�<B�	"��k"DYF��:6�81jb��g���s�[ch1�b������]{/�*N��?9�:�}B@BYBW���y�����I������]��'���=�er���S,���rq�����'��M�L;�BHIH���������S+S��,�z�K�o-����/�?O�N+K�I�N_�����Q��'`	6	^g�dn�|���;k0;!�@�RNJ�Q��0K�2�p����"[Q��k���u3��a�]�H����<-�#�&���$y���_��af��C�4f	g�����l�����_��s�s���]4��<����������.(Z��0x��E�EY�~+t(,+�kq���"���EO~
���X�X\|k����K�������-���[	��R�Ciy������~v�y���+�V��t]�eq�p�������i��=Y3aM�Z��������b�s�������]�74n4��j��M�nT�W���\V�~3o��-~[j�l-��i�`�������,��ww��x�3~g�/��T���U���n���=�{Z�������]Y��Hjz�M���?`c�]�����A�����z�.����������+�����#����2��;��mn�j:r�������+Nh�Xy�r������S�E�����y�<�������[&���;w�|������S�/��y��%�K
�]/��������#����W��4vxt4u��<y����k��_g_�|#�F�����oM��u�w��N���w��~���>�~����V�n���.����=�y|�	�����O�t=�>+n������xoPo��I/�_�^~�+�C���WV����g[b�k���7��������_�Q����������=�?�~J�����/�/�Zm����`����#��~0X��4����
��(���?YA�gV�	�����
@-l��������U ������q�u��&;WJ��H��5S�E~��!��-��:�����d|(R'��eXIfMM*>F(�iN����x�&�ASCIIScreenshot�B�G	pHYs%%IR$��iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>1032</exif:PixelYDimension>
         <exif:PixelXDimension>1830</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
a�~iDOT(=�8�5Z@IDATx����S���u.s�j�]B.�F��B�nn�(*T��k���k���_�P
�\rI	�_�13gf�9��^{�X���5��|?�={���g���������g�s������[`C@@@@@@:&
u@@@@@@��$O@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � � � � � ��$�@@@@@@0 �4'� � � � � � �L�@@@@@@@s�Isb
 � � �,���O������kA?U�@@h[���}�8q@@,�;��#����u�]7L�0�xr���J����Bwww�t�Mg���{�	'N����|����c�����?<����_��W�3fL:G�����C�c�;::��)�5jT���,�Lj�v��x���<V\q���
+���x��G��-���a��W���@@XX&�G��� � �@�6�l���c���/�<��-o)����m��6�?>�w�}�������[n�e�����u�]���}_z��p���O<1���^;\p�)�j�����>��t?���?*|T��t���n�a�~���B�%�\��vu�6�x������;/p�a��w���?��S�i��v�m�p�����x� � �,,��#��@@@��U�K,�D��s��]tQXs�5u���
g�yf���kR�����zh�g�}�[��L*8��|S��Y�Z����_N�r�!a��w�-�\�<����/P����o��q~��`r~9@@V������~!� � �,Pu0YEH���+�_���R`���7�|s�b�-���9]O�Lv�a����%�Pr��iAK����������m�sL�m�@�e]g��E�`�-&N@@����A�. � � � ,�����>�:��p�9��v�!���a������O����k4��S0�l�N8!h��b�-������7��Y�����&��SC@@��J�`r�z8�3 � ��N`A&5;����nx���S �k_�r�)i���'���6�`��W^	�����������s���k�q�m�GuT�����A��d�u��g�y&,��2a�M7
�����+�<���}}}��;�W_}u������O>t���}�����������:�w��]����P��5*����~-��s��~-	�0����J3f�]v����[�%�WXa���%_�����7�pC����?�����7�O~���z�#F�H5� � � �(L.
�2�@@��n{�7������If�������7�[�3��Z0�e\�;��p�g�QZju������/��G�B!X�����^N0��]/�����o~3���o_������[���4���o�6�>x��1���m�MX|�mC��	C�n;����v��eq�M�2%�Zzw���)�<������\[oooZ����.�>�h�\a���q
35�U�Um��l���
�������~:��y;q��4��[s���)d�sk�u��5S�L��mo[n�e8����K/�f����k:���^:�v�ia��6J�hCy>E@@J����a�N!� ����uwN	?�ujxvb����0�3�o�Qa�MGWV��\~��A3K�=��<�?>�w���YU�j>��#�;��N
�v�}�4����;�����&O���,-������5^c2�'o���H32R~��_������jO��_��W^���N�i��� ,���a��KUR�n��q�m��i��f(j��%�\�fC��
oH����u�K!�o�����}/<��Ci&���o����|��w=/5�R�k��x L�>=|�������G=/�-���)����S@�`Q�����
�/�x�����'�x"�����VZ)[&���r���l�M
2����t�:��w�9y��)0O�?@@@`! �\�`� � �@�	\s��p�-�������[���d����	����4���R0����>(��v��g������t��'-��H��$-���_�"���^i��f��[=j0�����`[��B�Vo��~gx����)���6�=1���#��z}�H!��J�,C=o|��2�?*tVP��ZjU�?��O��Z�U�&�z��Pk�����6�0\!��O�Y�Z�U�����5A��N�4)(��������ZfV[=�\q����Z�W!�f�����i�����.���N�s�� � �,����}@@X��=���Q
&�3����:k������Z�����[m�U8��#������T��k�x����v������
?������z?���l��X������f�~���N�_�����i������')�b�-��'��{��U��0p�UV�myT-��kN���.)D����g{X�L�t�M���NJ������z\H���:���[/,�Tm�h=��2�_�����n8���������n���r-�� � �,
�����}D@h+�v&:���������tM�R0�Yf�h��b��;���;k7-�p�O�S�q���~-B�A�������Z��?�Ax�;�����0�`Ra�����4��{���]�e�=��{����*�7����� X�*Rj��|����>�l
*u���{,h�]�|,=����o���o�u�`QK�j�d����k�X&�����|�BL�����7�\s�qM����� � � ������*c"� � 0�L.�������f.j� -/�o
�tMB-���B�?��tM��>�
&5NA����LM��l�����!�=��Y�r�S���)S�Fm4Rac}��o���2�z����P>��si	U��N0y�W��Nj����^�4�P�z0�����vZ�f�q:g������&q�@@Z�������!� ��������[n	�����x����i�����gA��6]�R���\s�����vn0��a�:�����W�����&����y�����g�5u=�|S0��u��7N7_y��)���H�������7]wR��7n\�M�Y�?����L�9t������K.��������n��N?���kV�`r
@@X�&���� � ���Lj����|�����t��f�f��|�����NA�fNj6����Z��N?��O�;���]��j�5+�z[�����o�1Y�ncOK����2��/�|8��s���
�:��t
J]{R���^����b��ez5����hz�����4\GGG�8�kLj6�g=��>��T�~���%�@@@`Q �\�}�; � ��)��������^��ov~cFv����	��>���m�Y��_+�r�l�3�<3\x��a���
�����������/y�g�-��2���������w�uW���Yz_������g��^�My�_��[~���A���6�"�����{�b����o��6����o���q���qSH������G^����%W�������;�8 ����/��fK�z�zl���f�6�ZvU��������>=/�t��l��v��E
-���?�1(��,���[.�L���' � � ��,��Y4@@X0z���%���;��8Ql������*B0�k
y��i&�~��>����%�X��]�����_a�=�HK�*�z�����#X�;����g}c:N�*T(�k�8]�R���c�I�h=������q�����a ~��:G�
��F����J������B����+�T����&��w��=�����O��Pa��kU�e\��g���O~2��5�	z�^x��p��w���??���Ay����	&�
 ?���?�������?��~�c��C�k�^}���]�zW��g?�<�BM=�Z����ON�d��/�d%OA@@��P�`r!|P�K � ��B��`RA��[o=������n�-|�k_K�����n��\����_���)���G>���1]#P3�����z(���3�ZTK}jF�[���j�������Z�U3X�[o����QA���x������BA=^
������/�8][r���oz���L����/�t�M��GM!eWWW�����zP[�Bl��o���r�Z"V��M�~��'�Pt��v
��9z��Z���?�<�L���?��s�4sS�LJ�
@@,@09��[@@@`�&�{
�����r�W\qEx�{���"�s�����p�G�pQ��\w�u��
�$m�M!�����B*�:��C�V[mE(�l�����]v�%=&W^ye�2�
�e���k��v�5�pQ���q�iv��V}�����V=N
4�Yg�(^s�5��{�	_�K�j�������|'\v�ei)��q�ig���Y�����SO-�����e]�t��������f��\t�6�����@@@�A��H�@@�E��@x��'�57�x��<�@�{�������o~3��x`Zzs����Yg���U��?���_���q���N��B��{,�r�)a�M7
'�tRZ��8��ZRT��f�����E��2��V�x|>X�L*��L�o�1($V8���+���
-�����oz�5RK����
1�+��������Oz~jf��1c���>�l
&��������#Sp����t���N�5UC��T �u���������Jj-�{�9��w�1����q������.
k��fc7�#� � ����B��r�@@@����I-��� � � ��L.<�%�@@h{���� � � ��&�HC � � ������8�@@@?�I?k*!� � ��E�`r.@t#� � �m,@0���� � �,l��#��A@@^ �|�� � � �@�z�����O��VZ)�k��P@@@�B��
1
@@@@@@�L6w�V@@@@@@�P�`�BL�B@@@@@@����]�@@@@@@* ����@@@@@@@���dsnE@@@@@@�
&+�d(@@@@@@h.@0���[@@@@@@@�B��
1
@@@@@@�L6w�V@@@@@@�P�`�BL�B@@@@@@����]�@@@@@@* ����@@@@@@@���dsnE@@@@@@�
&+�d(@@@@@@h.@0���[@@@@@@@�B��
1
@@@@@@�L6w�V@@@@@@�P�`�BL�B@@@@@@����]�@@@@@@* ����@@@@@@@���dsnE@@@@@@�
&+�d(@@@@@@h.@0���[@@@@@@@�B��
1
@@@@@@�L6w�V@@@@@@�P�`�BL�B@@@@@@����]�@@@@@@* ����@@@@@@@���dsnE@@@@@@�
&+�d(@@@@@@h.@0���[@@@@@@@�B��
1
@@@@@@�L6w�V@@@@@@�P�`�BL�B@@@@@@����]�@@@@@@* ����@@@@@@@���dsnE@@@@@@�
&+�d(@@@@@@h.@0���[@@@@@@@�B��
1
@@@@@@�L6wY�o���S�L	��O��Cggg?~���3f��t���@���#F�H�����t��i��G����C=���7�����q�Q��17�W^O�������	����v�q�~��������4 � � � � � ��`���&��-�>�l���?.���9Z��������������/��?�q��o~y�������a�w���{X{���n���p�y���o�9<���)\g�u�������.���W_��q7�tS8�����O<�D=ztx��v�m���N;��VZi�q
]������:+�y������&Lm�Q���?��v�����:��^�����\�������{.,��Ra��7����V[m��t 7 � � � � � ��I��n�����/})�p�
���74&����p�1��{��'����`��|�d�M������w��I/�����/~1(X������������z��g���
N;����������������[�����}��A3-U�>��>cR!�����G}4�s�9��SOM�5�1�s�o������q�� � � � � �,����#_��]tQ��7��f
p��{���|��+�X�4���+a�]w
7�xcX���G>������%���_}
~��4��/LK�*�4iRx�[������Q���W�x����K.�$���c�=��g��fR*�|��'������w�3|�����nx�����W^���7�?�����:_�������;��w�a�$���ji��fz���HA�I'���w���������~d1y��tt����=�X�y��q���s�=7l��vM����E@@@@@X&�}nwY�5;P�f����s;$\w�ui��1c����;.����-�X
�&N�����p�	'�e�Y&y����O�,��{���Zk���n�a�
-5Ra�i��^����3�8#�_��UW]��g��~���M��8�d�������O��~��_MK�j�Z���r�-�LK��|F���EK���5��U��\e�U������� �{�{��������^:]WR�B��:(����GuT
I_������@@@@@@�EI�`rQz��p_5�P�����/-���M�����O>9�~�����`
3�Xc�Y�(d�L�SN9%�v�mi�V]�R�zT��o;z���_~mG�eeu��������H-����|%����kD�7w�5��Q5�8��������|���/9|�3���>��K/�4��r��#�<2l��6���o'�xb���������G?:�8�
,7�t�N��Mo�m>A@@@@@u��E��p������M�q�=�K-�T������\�,��7�8l���a�V��H�0����fE���^iFa�����4S���>�����?�� S��j&��;���C���lE������A-1��:7�UK�6��<�@
��!�>�������+|�S�
Z�UK�j�d����_�B�G3+5�S�Au
����td��)p���G���@@@@@@^ �|��VP��HL.���a�����'�H�|;vl����	��-jY���������O��N;��X�}����/��/�8|�s�KA�E]R!��=y�M7�eY{zz�����=���������}������V[m��Sh���k�kH�j9W���r����
4���ni��[n�e�kd��}������7�pC����Z����+��r�~e�eZ����.�$7���& � � � � � �����Z��ZVU�g|��GSh����-k�M�`���w�}w
53P�h���K�����~�����f)����m�Y����BG];RK������4^��������K��j\]�R�(���
)�vvv�I����-y����k>j�U���L-�z������+��������g)UH{�%����l�A���k��c��IA������>�f������O���:�cF����!�� � � � � �����C_r�%���� ���m��u�G]gq�u�IK���]��>>���iV��c�����o-��m���
>�`����������������{�h��R����/�>T���C��V[--�������G����o��YU=��3���f��j��Z�����
�����s�=7����O���L�����Im��X��'?I�����f�~��[l�E����Ccx��O�du��7� ��:��
��]��G?��z��y��qi�jFc@@@@@��Q@�z[e�U���}j��d���
5�P3%�����
%���Y����q���~�6�o�5�Ha��������$���M6�$�
T0�����PO��fO6�
&UO���Z�ZjV��������9�:��_�r8���S0��`�����P���[0�Y�����?�.���V���
F���`R��j���M9/�pgL�����2�+����J2crHL�v�sX3q��3f�su��P���0{���f��5�>3~��p����w��u��Gw��*ZMC?���ts6���K5�:��]������J=�G�]����2��A���o��
_��zG�������Rw�c�=�'3b����K�yGz*�{p�Y���JY�:�s%2�A�������?����e��������yQ[���/w7�xc�a��G���_�p�=�];��R���U_�U���/��n�>jyX]+�q6�~�P��k=*�����r}����Q9��\���fLjv�f;�������V�K��U3���'���W]uU
&���/�kc���~i����r�7��]w��:�����{6m���Z��G	�&��[omR�Ak�EOA�6-o�8+����Z��E�6�^�������_OxhG���
�{�V'P`��z��:.��p/�X��M�x �������G@?��O�3��@��G@���2
���sU�?h���ox��
/���s�~����fX������XE?��=������|��K/������������g�W����x���=U��!��L.,����PH�k ���oMof<�����fW�v�mi	T]���/���K�?����Y����/��6�f@���Z�U�������lG-�����?��0�mo{[:N�fO6�b�/��|
5?��O]��[o
���kz�W�����6/������7����c�I���Mt�A)�U`��M9|��L��T3=6�I�Z
2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&����������_���{�+�UW]5w�������5�p��W���?�}��&5�QK�j�`�_F>��S)$�������fN�4)�y
u]K�8���|{��������Njy��N;-(�c�=����\sM�j��-����N8!��7�	|p��G�fTH��fS���f���R[��~���OK�}��A���,I��,�R�l����������^�<�7�����v�
����I��c�5w��wk���L6w�����Z����7w���`�Z�����]�o%��n>>�ds�[	������{s�[	&����O@����V�����O0���[�_�`���J��?�fT���Z�2�4���.�zh�i��R[�
���o�}�C�s��\�^d~�f6�z��A�����vX�^�������#�Hb��Fw�yg
�n���t��I�Oi6��g����O����������rJZ�_�B
2u]I-�z��W�O<1p��)���U���[,y��a�m�
����m
-u�����k�q]tQ{���
4���7����I��c�5w��wk���L6w�����Z����7w���`�Z�����]�o%��n>>�ds�[	������{s�[	&����O@����V�����O0���[�_�`���J�������a�u�
�~xZ�U���7�0�t�I���nJ��>�������������%\5kr�m��5�Q��'�i�o}�[i9W�w�u���Z�UA��1��\Rp�T�-���i9V����O33�{��)�q���i�s��?�������;.l��&����K��T��h����	&�e`5�Q38\j�Y-G�������>~����T��3�8#��M��D��r�!)���L��
=6�I�Z
2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&����������_M��g?����?�1-����<����)������I-�������[������A�kE*��'>��XU���T�;��p��w��Z/���0f��>�8][����g
35�Q��M�l�������f���q
�4���G-�Y�Zbu������/O��������Q�F���\�a��~I�5+u�K-I�}UKA��I�&��o�t!m#
Bu�4��S��\y�����
A�������9����a��N0i-���d�Zx�p��~��^�����������A�T����w���>G��IS�9N09G��IS�9N09G����������x1-���{k���q' ��5��J0�w��L��]����giV��Qm��)x���~�Xc���/������~5���u��DA�?]�2������c�=6h��f��[n�f2�������_�j)X��m
�:����%���O����9�M��������e`u}K�&����o�*���&��C���3���Z�������"\�`�5>�dk�	�po�@k�L���`�5���q'�l�;��hMU����L����T%�l�;U�&������i��_�������4\s�5iV��-]k���,����;����M3i�;�����fT�|����'�H��*<{�;���?�����\����f$j	�?��O�������V[-]�q��v����l�i�Ww�UW��Y�����T���cS`����7����:������U3��������7����Yg�4R���u����i���\q�iF�f�j�W���+��8��\v�e]+���#k������Y�����F0io���d3��p�7nV�`����m����*L6S���`���Y��f*���no���d3��&���U�����m���Th��dk���
�
G?�*���H���R7n�l�]~g�K�;}T���j�W��
�m�����%�q��s:N�W?N�c~�:������~���>��7��9�\�0�~�:/'��q]]]�8�h�X}��L�i��Y��p�5��z�c)W?�z%����G�}���&��	&}���&��	&}����s$K��5�>��g�W"��5��d~�y%�s
�6���5�|&}���@���r# +��u�nF[�`��c�I@fF[�"�Y'��mq`��"�Y'��mq`��"�Y'�mq`��<f��f���	��<f����&�,�����m��q�L�=����J��~m�I?��Y������:�D0�k��	&���J���_�`��:�D@�k��q���+L�~m2?�����_�`���J����TC�R��J9���y�:q7�-L0Y�1�$ 3�-�{����`���80�d����`���80�d��������80�E�N�I3���dE�N��h�Ly�lc��6~�8u&��d~�y%�s
�6���u^��,��k��g�W"��5���~�y%��\��M0�g�W" �5����Y��&s
�6��u^	�\��M0�gM%_�I_o�!P��d������<f����&�,��u������c�I0iF[�`��c�I0iF[�`��c�I@fF[�"�Y'��mq`�"�Y'�f���	&�<t���d?x�:�~�2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&���������7��T�`�R��`dE�N��h�Ly�:	��h��^�1�$�4�-L0Y�1�$�4�-L0Y�1�$ 3�-�{����`���80Y���w3����E:�X�`��<N�I����u^	�\��M0�g�W" �5����Y��&s
�6���u^�`2��kL�Y���r
�6�~�y%��\��M@�g�W�=��kL�YS�W�`���jT*@0Y)gq0�"�Y'�f���	&�<f�df���q/��uL��&�,��uL��&�,��u������c�I0iF[����c���mq`��"�m,@0�������s����:��{���&����+��~m����J���_�`��:�D0�k��	&���Jd��_w?���d���& ���+��k��	&����+@0��M5* ����8Y���w3����E�N23����y�:	&�h�Ly�:	&�h�Ly�:	��h��^�1�$�4�-L@V�1�����80�d���6 �l��SG�`��9@@�g�W�=��kL�Y���r
�6�~�y%��\��M0�g�W"��5���~�y%�\�����u^�`2��k��Y��p�5���~�T� �����
LV�Y����c���mq`��"�Y'�mq`��<f��f���	&�<f��f���	&�<f�df���q/��uL��& +��u�nF[�`��CgL�����#@0��  ���+��k��	&���Jd��_w?���d���&����+L�~m�I?��Y������:�D0�k��	����J��~m�I?k*�
L�zS
�J&+�,F@V�1�����80�d��������80�E�N�I3����E�N�I3����E�N23����y�:	&�h��y�:q7�-L0Y����&����� ��{��Y��p�5���~�y%�\�����u^�`2��kL�Y��&s
�6���u^��,��k��g�W"��5��d~�y%�s
�6���5�|&}���@���r# +��u�nF[�`��c�I@fF[�"�Y'��mq`��"�Y'��mq`��"�Y'�mq`��<f��f���	��<f����&�,�����m��q�L�=����J��~m�I?��Y������:�D0�k��	&���J���_�`��:�D@�k��q���+L�~m2?�����_�`���J����TC�R��J9���y�:q7�-L0Y�1�$ 3�-�{����`���80�d����`���80�d��������80�E�N�I3���dE�N��h�Ly�lc��6~�8u&��d~�y%�s
�6���u^��,��k��g�W"��5���~�y%��\��M0�g�W" �5����Y��&s
�6��u^	�\��M0�gM%_�I_o�!P��d������<f����&�,��u������c�I0iF[�`��c�I0iF[�`��c�I@fF[�"�Y'��mq`�"�Y'�f���	&�<t���d?x�:�~�2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&���������7��T�`�R��`dE�N��h�Ly�:	��h��^�1�$�4�-L0Y�1�$�4�-L0Y�1�$ 3�-�{����`���80Y���w3����E:�X�`��<N�I����u^	�\��M0�g�W" �5��H�@IDAT����Y��&s
�6���u^�`2��kL�Y���r
�6�~�y%��\��M@�g�W�=��kL�YS�W�`���jT*@0Y)gq0�"�Y'�f���	&�<f�df���q/��uL��&�,��uL��&�,��u������c�I0iF[����c���mq`��"�m,@0�������s����:��{���&����+��~m����J���_�`��:�D0�k��	&���Jd��_w?���d���& ���+��k��	&����+@0��M5* ����8Y���w3����E�N23����y�:	&�h�Ly�:	&�h�Ly�:	��h��^�1�$�4�-L@V�1�����80�d���6 �l��SG�`��9@@�g�W�=��kL�Y���r
�6�~�y%��\��M0�g�W"��5���~�y%�\�����u^�`2��k��Y��p�5���~�T� �����
LV�Y����c���mq`��"�Y'�mq`��<f��f���	&�<f��f���	&�<f�df���q/��uL��& +��u�nF[�`��CgL�����#@0��  ���+��k��	&���Jd��_w?���d���&����+L�~m�I?��Y������:�D0�k��	����J��~m�I?k*�
L�zS
�J&+�,F@V�1�����80�d��������80�E�N�I3����E�N�I3����E�N23����y�:	&�h��y�:q7�-L0Y����&����� ��{��Y��p�5���~�y%�\�����u^�`2��kL�Y��&s
�6���u^��,��k��g�W"��5��d~�y%�s
�6���5�|&}���@���r# +��u�nF[�`��c�I@fF[�"�Y'��mq`��"�Y'��mq`��"�Y'�mq`��<f��f���	��<f����&�,�����m��q�L�=����J��~m�I?��Y������:�D0�k��	&���J���_�`��:�D@�k��q���+L�~m2?�����_�`���J����TC�R��J9���y�:q7�-L0Y�1�$ 3�-�{����`���80�d����`���80�d��������80�E�N�I3���dE�N��h�Ly�lc��6~�8u&��d~�y%�s
�6���u^��,��k��g�W"��5���~�y%��\��M0�g�W" �5����Y��&s
�6��u^	�\��M0�gM%_�I_o�!P��d������<f����&�,��u������c�I0iF[�`��c�I0iF[�`��c�I@fF[�"�Y'��mq`�"�Y'�f���	&�<t���d?x�:�~�2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&���������7��T�`�R��`dE�N��h�Ly�:	��h��^�1�$�4�-L0Y�1�$�4�-L0Y�1�$ 3�-�{����`���80Y���w3����E:�X�`��<N}���7�|��;�����g�y&��a�������W����l���������'�_|����1��q��p2U�;����{,tvv�UW]���l�
����E�3l>��87V�2eJ�/����A?���(��4iRz}�0a�OQ��i���������������|�����VZi%������
�����b��$��tC�����O�Q�F�VX���O��?�Yr��a��qVe�A��O�����/����.��S����gX}��!P��d��������7���f�a���O~2|��_�1�� � � � � ��F��O�T�\�`�rRD�z��o�=(hl�������|��_?���v�y�p��6���!�Y5����l~��Y�+i����Z�~e�}}}��3>�����u^��:���e��#������
��">��{�f��:��]���w���fX������X��:��fF�����F<��`�2,�s2����z_L�S�
D+6���*��_�kL.��/�n!Xe�U�#�<n������[/����wO?h�\m�-�\Z��g�hT��5�3��l�;�:��5���5&[��?:�rPzc�UKA�����*��l�?��l�;�:��5���5&[���qo�@k�r����S�^�`���
�	L����l��
��0*B09����I�AEpD�r����"��H\n �taT�`r��
�.����>����I�AE&�������"��H�a! �\HH���)@0�����Y��p�5���~�y%�\�����u^�`2��kL�Y��&s
�6���u^��,��k��g�W"��5��d~�y%�s
�6���5�|&}���@���r# +��u�nF[�`��c�I@fF[�"�Y'��mq`��"�Y'��mq`��"�Y'�mq`��<f��f���	��<f����&�,�����m��q�L�=����J��~m�I?��Y������:�D0�k��	&���J���_�`��:�D@�k��q���+L�~m2?�����_�`���J����TC�R��J9���y�:q7�-L0Y�1�$ 3�-�{����`���80�d����`���80�d��������80�E�N�I3���dE�N��h�Ly�lc��6~�8u&��d~�y%�s
�6���u^��,��k��g�W"��5���~�y%��\��M0�g�W" �5����Y��&s
�6��u^	�\��M0�gM%_�I_o�!P��d������<f����&�,��u������c�I0iF[�`��c�I0iF[�`��c�I@fF[�"�Y'��mq`�"�Y'�f���	&�<t���d?x�:�~�2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&���������7��T�`�R��`dE�N��h�Ly�:	��h��^�1�$�4�-L0Y�1�$�4�-L0Y�1�$ 3�-�{����`���80Y���w3����E:�X�`��<N�I����u^	�\��M0�g�W" �5����Y��&s
�6���u^�`2��kL�Y���r
�6�~�y%��\��M@�g�W�=��kL�YS�W�`���jT*@0Y)gq0�"�Y'�f���	&�<f�df���q/��uL��&�,��uL��&�,��u������c�I0iF[����c���mq`��"�m,@0�������s����:��{���&����+��~m����J���_�`��:�D0�k��	&���Jd��_w?���d���& ���+��k��	&����+@0��M5* ����8Y���w3����E�N23����y�:	&�h�Ly�:	&�h�Ly�:	��h��^�1�$�4�-L@V�1�����80�d���6 �l��SG�`��9@@�g�W�=��kL�Y���r
�6�~�y%��\��M0�g�W"��5���~�y%�\�����u^�`2��k��Y��p�5���~�T� �����
LV�Y����c���mq`��"�Y'�mq`��<f��f���	&�<f��f���	&�<f�df���q/��uL��& +��u�nF[�`��CgL�����#@0��  ���+��k��	&���Jd��_w?���d���&����+L�~m�I?��Y������:�D0�k��	����J��~m�I?k*�
L�zS
�J&+�,F@V�1�����80�d��������80�E�N�I3����E�N�I3����E�N23����y�:	&�h��y�:q7�-L0Y����&����� ��{��Y��p�5���~�y%�\�����u^�`2��kL�Y��&s
�6���u^��,��k��g�W"��5��d~�y%�s
�6���5�|&}���@���r# +��u�nF[�`��c�I@fF[�"�Y'��mq`��"�Y'��mq`��"�Y'�mq`��<f��f���	��<f����&�,�����m��q�L�=����J��~m�I?��Y������:�D0�k��	&���J���_�`��:�D@�k��q���+L�~m2?�����_�`���J����TC�R��J9���y�:q7�-L0Y�1�$ 3�-�{����`���80�d����`���80�d��������80�E�N�I3���dE�N��h�Ly�lc��6~�8u&��d~�y%�s
�6���u^��,��k��g�W"��5���~�y%��\��M0�g�W" �5����Y��&s
�6��u^	�\��M0�gM%_�I_o�!P��d������<f����&�,��u������c�I0iF[�`��c�I0iF[�`��c�I@fF[�"�Y'��mq`�"�Y'�f���	&�<t���d?x�:�~�2?�����_�`��:�D@�k��q���+L�~m�I?���d���&����+��~m����J���_����:��{���&���������7��T�`�R��`dE�N��h�Ly�:	��h��^�1�$�4�-L0Y�1�$�4�-L0Y�1�$ 3�-�{����`���80Y���w3����E:�X�`��<N�I����u^	�\��M0�g�W" �5����Y��&s
�6���u^�`2��kL�Y���r
�6�~�y%��\��M@�g�W�=��kL�YS�W�`���jT*@0Y)gq0�"�Y'�f���	&�<f�df���q/��uL��&�,��uL��&�,��u������c�I0iF[����c���mq`��"�m,@0�������s����:��{���&����+��~m����J���_�`��:�D0�k��	&���Jd��_w?���d���& ���+��k��	&����+@0��M5* ����8Y���w3����E�N23����y�:	&�h�Ly�:	&�h�Ly�:	��h��^�1�$�4�-L@V�1�����80�d���6 �l��SG�`��9@@�g�W�=��kL�Y���r
�6�~�y%��\��M0�g�W"��5���~�y%�\�����u^�`2��k��Y��p�5���~�T� �����
LV�Y����c���mq`��"�Y'�mq`��<f��f���	&�<f��f���	&�<f�df���q/��uL��& +��u�nF[�`��CgL�����#@0��  ���+��k��	&���Jd��_w?���d���&����+L�~m�I?��Y������:�D0�k��	����J��~m�I?k*�
L�zS
�J&+�,F@V�1�����80�d��������80�E�N�I3����E�N�I3����E�N23����y�:	&�h��y�:q7�-L0Y����&����� ��{��Y��p�5���~�y%�\�����u^�`2��kL�Y��&s
�6���u^��,��k��g�W"��5��d~�y%�s
�6���5�|&}���@�;�vxfb���
�,�l3�#�BGG������0��3������=#b��m���i?}��3�3t������y�t��Yk�����`�5�d��F�5U	&[�N0�w����L��������*�dk�	�po�@k�L��������T@�L�#_�#�4}�0f�����:c��P�=�>�}������c:'����u{��y��q0}�1{�cp���66��)����8��qm�Tb@�9�������TO����Q�i\�?:�#��N�K������.HYk
�[�N0��-������������ ����a����`����c��7�~����3fL�=�|����Xe�Y����?�W#@0Y��pG!��X5�LV�8�Q&�+V����8w��+V����8w����U�?��8w������L��#�y"�D���z_��::���1aF��0�����������g���C��{|-q�zf�}5F���b���v������"j7�T� S[
9��)����f�����g�?3U��D�o��Y1u��8�S38��b�����N��^w<m#�G}������������q,�*�occ@:"��SM��g���# �K�~����^�`�.��)�aF�����7�f�3b;~T�6uz��t{�m�@�o L��@������J������z����Q�F5=2����7t���v�j�>y���(��*�/�#+kz���k��1�H�;F�]���]Z� ��8h����y������P���)~o����n��s�1{�1�<�:C=����L����=�;������|��7�7�����~��a��I�g��0f�ba������}����_Zy�|�������o^7=��_�+���1��������H��q���7�G��������������*7������������q�����������pf�U��C�#�~$t���y!�����j_��?���o�}F���������i����x���aZ���M�>N��������N�5�\ftv��]�f[oL���������=azw�������:���q�+��\�T�eG����=*���)�����]������8����s�`:�^+��r��� S���!n�G����,�n��_|wr��\��f+*����Y���Q�<y�+��k ,����>.�5]qG���J��7���������UA���
O���I�����p���/�`Q���Z��7���Jo��Mm�S����q��B���M������
����B4���i�c�o��!��?O��B2msz����#������0�'hW�Q��o=C:������_������
���������Fu��8%W���\=z��������r0#�.�5��M�1������g3�o�����:�����^�����5������}'���A0i�$���C@2����uC�>$�]&
P�0$��v��uCL�]�R�`�-6N����?��0��'�e���JW��C��mZ!k!����fc�h��w��u��a���j_|cl W�����jv���'�����1
O�o>�n����T����cd'���i�hv�zc�+��;#�
mg��q���?���s�����M��1�U�����W��/�����o�*<Y�7qh����|�H���sc�G����Z2X�3����y�qj�8m�W��M�XM�i�O���m�X��4�f�����	���h	�8d:/�Ca�f;
7$H'��kE0�7�SH����i��0ZM����%�X��
�i����iq:c=h���:����FS���uL6�z#^ciFO��m���9hm���[���@`����>p�����-�<?J���7��L����I@6?z�~,��n7?GL����K@6�v�s$���7��L��G.������!P��Gwc&>�ch�6X@a�t��
y���8�4����:Z�*(����Livi��S��PvZ�6n
:�j�f����j�B�Y��O������P������z_�_��v��(a��<�������c7n
���om�mco<�8S5��U�����������XK�b��sWa�N�x��\�7&6*���vm-#�{��^��Y�
K5���V���
3��ot\BQ3���M��{TOc����l��~�WK<�|Z�
'�T��eM��`/}��k���
�&� Q��f,*0�������Z�O����q
%SH�G}�j�T5�|j
*�}.�q�
�q��Vv�3B����?v��e�c��?~%�M
��co����a���C>
�q��������<���������N��T������?�~��%��G)�-�k}�CW_|�i������������������[O�����\�?=��'��u���79�_
�����6�{�y?��������vA������g�?Nj�d���q���O|�������}S��\�wE�v����[*��tw�76^� �����#S���'t��?0����&��T�`�5�d��F�5U	&[�N@�{kZS�`�5�T� ��7�f}���������_?���jX�k .�50=NJKve�����Z[�4����R��xo2�v�3"���"�l�����c�������C=����Uj\�qS0��S���������>dz�?�K�Y�:V���n_}�t��@���
B��8;6��7�{��U}�����j\�8���T�D_9�y�=����*�Huf�����2M��)���
YR?��iS�Y0��������TH�%��������5�S��6��
mtj�4C4��Y�j+TUm�_m��0Va�6��iZ�4#�*�Q�7-�}q�Wz�C��w��
+�n��h�bz��z��D��zyI������1c_|)QX����4�Q���t�j�1jm���3����B��10T����*d�AQ-`��b��q�x{O�O[
k�W�%������Gh���+��c5����S|��������a���
_�C�hG��C�o��'�Q���zn����>G�}�S���u��[|�P`<3��k�����������O�tL�����>�qs����B�mcO����#{�,�>��Uu\o������s����m}������d��t��{�o��J�a��#����@j���	c�Bw\NX���Y��5����3�C�^���#����S�o��/Z���2G����xi����\���_?���q�x�oZ�f�����+���2�Y���?��= �l�CD0�{kZS�`�5����F�5U	&[�NU{�I{c* `&��F��g{4�����u�X#�
oR����z��VLL�&��<���N���+E�������Fo����?05����&k
C�y��l[�U4�;��������
Cj���\�?�����?��	Gm:�lE�����jI�i1pPP��������1����q�fy*�T�Yk���X��B���F����oj����V�f�(���R�����b�I�:�������}�f��7 �j���d��
"���Lc|�So��
&cY4ka��N�
)�����:��32�Y���[&*�BF}�������������}�������G�d����k3_�:�� *����
�F(TTd�P0�	_���pQ���@����+0��z������#gLMAb��c�R&{4�QW������t�<.�q<�k��5|{f��_5w�Q@|��+t��c
{��
0L��j��l�Y�CH��L�/�b��p3~����;�.0n������(����[�yw�?���������
9���#5{sf]�����P�U
TS���dk����F�5U	&[�N0�{kZS�`�5�T� ��7�f���Jx��G�
7���zk�:1���f�����*}����!��ab�7�=��
I'O���5��*8���,���CoH�L�gQ���U)�T������~�m�b��yeah��1�4��q�>��_}3��.����J3q4V��^
lc��Y��S�}������NI�cf���|��I�p3FM�1���K]'��To��b�����3���^|#1�����B:-���3���~�f�j�����S�5S��Hk�l�����k���������:.~L��v|�r ����]�t�������U���8�E3����{�	]����e�j�bc��1���iyT���!����@��J����e0���8�K{zk3�V�?*����4+m��`���3< ��,�1&.!�02�
4�3.S���N�ZW ��fg�gP��q�:G���iVf�M!�BJ��3����BP�����=���1*���i9��I���w:5}]A��QZ\S����dk/�I�[#�����q'���5��J0�w��L�S3�U�I��wX�?S��PK��j&i-������
Af[�&���a���i��_<���H�Oye�L��������t��S�Y��=���T���q�p}�x>����l������3�S��q�n1�I�mS*����SH�f���%�
�#�<�\��m�i�O����sS��6���1��o�)��-����5.�
=�����qY[�6.A�������B�8;�7������S[��k��E�����Q��8}�����N���8]��~-�Z|�Q3c��D-O��P!a�GS������q�b�M3*�_|�i���~)<��`�Zu�at�����#b��k1���XgT��XZ�TA�f,�`S{�X���������-�Yl�z8�d���q?]�l��^K�F�����_������`�_</��I�j6*0�����.e����]��^�z���_���������-=7�$Z�6�u�.����GL�����k��/��n�f�l���[���uH=��1���W�]W_�{��v�?�J�j��W�{<=��k������t�3/�~�H���K��a��<�^���p���#o��U4��=�����������7>~��q�e)S����tm��J��Z�6���3�6j���x\�L�8fm�g��CAf�������s(�k�~�c5n�[o��������0&.����kW9z���s��[7X����G_����c�������}�2eJx����R=a�%�����J�~�������=�G���i&���p7�G��`t|�]���������sqN�;��k���??�K��=~?��� ��ug|���6}�i�7��^f��Bm������?����E���r����x�
&_~���3�K,���th���5lv�v����&���z����F����H�`�"H�A���b?c��kA�9#~�~��g��-��r�(w8��8�T�����
�����\�~�k��/+3&��xk�\����_d��"���SH:�7���/��34�~9��3�%��l�ifm��q<&�X���q8-��_V����
GSP?O��}�o_�PT��I��j+D�9F-�mrmp�~=���
-�M��5�|�fW�z�i)�\N��1u�O��S�>��m���r����x��S�'���L-s�0QK���!a�%�'~�CD�c�&��rT��X��������A���O����
��j�c��]�6M���z��7>���2����o���~�N���M��_�c����/����k�u�c����A��L�i��x����R}C����q6����l��>a��!m�[�����z�����$U����a�C$�d$D� �	��������5.����5�5�
� ��	J��$a�g���{�:�gz�CuW��=3_�^U�{�����������h��S#�{K����%_�w
��~���L�;�KT�>4T�T$>W���:u���Q��b"u�/��f%���J9�Ag�|�9��3$�2zD�|�	��>o��y�
�37U��P(A��:5���e������8��'�Eo~X�r8��{�K�?g���a�?W�/��_�9�A-��7�I�?�;v�~}2��L���������ks����T^����k�$��k.s�yO�}zR�)]�hw��'����Sc��%�S�#'UR�����{e"'����������oh_��u2����a�����{�j����wI��O�SK�&��+����?6GO�w��}3���j�I�|!�s�{\��'��h2#�����;�������-n�M��a���#->����3�tr��^�%3
'���3c�����b�7��f��B��X��_��6����M��Y?�N'7]�������3�������)&9�i���X��5���$VQJ��W]�V�_��18dnX�n3�q����6sC����������oFGr�L=�h��<�jd:N����m��F�gT��$�f��{�w�{F�7�|~K%�Ki��j��z6���d+�;b���`zQV�wO?�Y�4���bz�cI�;�f��W^�/_���Y���"��=�k�X�-98s�����"��^&����V0���>+�>����:w����u�'L���������K�;�;g3���.y#����M��K`�m���N���X��u�"mRG�&����*�H�\�\�M-}N6�pv��1��:�4i�Q�:pru�L���\Mr�O���5�N7�bS��W[������y>�n�����3��Q���Dp��<�1���o-�R�'���~p�E��Ub��'���[�����v�Y��j��M�����C�yW�N]���3�/Q���;����K����D.&_����E�.=�����j�E��t����L����'�R��������C\'3��5�U%������R�+���{kb=�:��}\�hQ���%s��Y�<���|��e�l��=/-;u���e�yn��}��z��d�����H�-&�-5���_�X^��S�O#5�f�D���^�9����:��Drm3������d6�.Yu���Z�\o��u���K��6���d��6Yu��}����8��}��K�������?��������7,��V�!�V���z�h��^:sF���H4�To����!���7�u�z�t���Va�3BT����SK��?����K���ylS!�7�M$7�t&LT
Y�u���z����-��J�[�V�#9��Zq�\��Sf�h�l�/^+��nO���</r�1����N�I����]��K��-z��,�:M��U��L�[�:-o"7Uz��� M���/'��y�KIIFRL&�#���D�j��EeJR�/�|}�*/������fgi_���N�G�j���c�u�Z�$�HB���6p�v�Wm�@L�����������h>�%�1i�5K����I��M�D�)����:E\�L����HF�u�]�:B#�iF2&M��N���V���%d�9Qpo
w�dk���b�����������{�i8��A9d�>����m
��$�
�/6#�7�t���@Rk��g�z��dBG�&Y���I�K�X�2K��^��������ery�OG�h�UB�\D��/�
��9}]��Os�R�F)]���1��u��_����@� ������-O��e�E��u�����9*gt���e�=��GyD~��_��\��#�-���H��!�w��H&]����W0���'����N��_�4!������E�roR�
����\�L������KDQ���4w��������C����������LI�j���/u{�b�D,o��L����d��B���0Y�U�b~�Z/o�~���}u�U���YT*u��N�3+��4�����gQu�4�:j1`�cr�hW2�NY$&��h��H4RQS������4-*l���L�:�po
y���������]vaJ�XgA��SA��1F��*�&u�Y6%?�b�\}�����?�ON<�_f�'&U?�Lw���o���Ai���d���Df����4�R$�H�i��kZs]���^�H���e"��jZ��J�UDo�J�I��O�o������Hv����n3;��Gc�4��hO��(� K��A����R�����������o��lpd�	X�Y�A��M�,�V��w��$p�_~�zsK��mZ��ncFLrF��k��|�y6c����n@ ��Lu�$�1%br#&��a�-��-9� ��W\!,(T���N�3�8�P�!�6"�|	8����)Ot�Z��*t�}�I".�5������PT�&BSjFS���:����Q���d=����$�S�H"E���L��h��������J?��S����of%����4���#�?�Xzcq�P @��L��ww�E���~l��M���O����|�zM�����m�*1��Bo���3�D"8�ZD������|���>N%��O�KrL��Bc�?��~g��ng4�o�q�����������cY-y��$7��X�he�������-��!Ro��]�/�;g�F|E�D�/CvHT����m�uV��^�g��
,���<�����6�t����M��f���|6M~V/������}�r���U�oE��teK�=��c>�V����2\��Q�$�g\��$���4!�BR�s�)��.:���~��o~g��A�)�dSDt�@�	 &[8D'��C�����\�Q��a9j�r��1I���6������5�i������������u�����@hc#��r������������)y��������s��?���/���M�Ir1�Kys�.�e�q
���HI��m����T����S�������?�V_��!���T�6�������o>p����,�Y4���Z_���p:�Z��~��|5�����}���y?\��N������t;	X}<U���Q�U[L�2��$P~�s*���wE2-z�z*G��&��gtj��F3�@*���i3��D�1��XV�i�s���$.��a�T�
����}dJ�E�����7B�Z:�&�D���#^:�gr�lR�qc��_$g����@r��7�8�����$�~����m�8@�5��<��5(t���{L~�������+�����f�����"J`*��)u�d�M���n:L"�����"
�A�st���d���;��Ik	���:������Kp��������|Pz��;��Su3���3UuJQ��5����^�SZ�4��''��?JF\�Z�G����m�t�����N��$yf�N����z�O���.]*?��y��;�P�S;������Q?5�����a}��h���x����o���>*3f��m��6��z@��4���#�6� ��E��*:;2���T	Yg1�4+.k�<uw%�h���DNv��nk�J��,�x�Of���~!������������Yk6:P�s��SO�����[n�e�
������
�w�M��\oO=/|] ��6�������/��?|]xIm������N��,�m��#�)�G]Ufer���w�m��^{�U��f(*�Y�*&����y���
H�M����{�5_(������RF�u�h�"���>>�V�H|j��|��KdE2�������������0_\�0�OTL����\�9�O<���]�<�6}��T��`}�"��Jp��kK���;�1��bQ������D�m�Q2��%
�G�\S����<����o�~��u�br]9�����b2�iG��c���4�x���x���di����u�b2M#���.&�����r�����_3U��^<(���'3��R@L��OWBL�i�[G��c���4�x���x���di����u�b2M��u�br]:�����b2�)G��c���4�x���x���di����u�b2M#�:bRd��)���V�5w���@���l2+�t���2��+������deQW�w�b��"�
�,*�r1��QD]ALF�M���aS
�	 &}��� �f��!�f�FLf�	�� I7;7����lAL����1)�rtJ~}������2��v���.�yw���\AL���?b2?+�=d>i�����|�DL���?�,?+�=���f�\������v@L�]����@�d����x3��=M��dP���d�h�6�=(�����L4A�"���r�}c�����Yo�Y���������>�+�I�4��BL�g��'��'����������I�4��B��g��'�}���1��=�.����|q�� ����tAofr�g�	����739�,M�����1��&hbRdbrZ>=!���2����W���������no+�Io(%BL���3���B��^����Io(%B����3���,�1Y��"����dq��&���&nA�m��poD'\b2�F�d���k�{8��2#&�	�������%�s&���%226]��������Jo�3��,c�������\AVFu�Qq��!&�(�� ���.�{E��dT��H16� ��b�7��|�l6![��nvn�d6��-��t�s�=�M��dH����%6��s&?��%���S��,�{�Q�r�n}2k�3�eb��cb��e8���c�Z�#&-�9�!�Z����cb� �mK1�����@s����|�@��"Y,����FE@IDAT�1��d�<�b�|���/��� &����1Y"�#%���er�=�29U�w��}r�~���._��y�eQW�Qq��!��(���=*�r1�dE�YT��bp/��������b	 &#��|@L�&��A��&d�C������f�A�nvn�g�	���I7;7b��flbZ���J���F�gN�����y�!����l��-�IKp�a�IG���2Kp�apwh����� shwKp�a�IG���-�d���	 &�3��A��d�<p/��Wo��/��� �������H���,��Wo�d�����\w��|��+dl�4��v�w����!/�1�����y��92���@k�"&[�A��hMU�dk�S5<�dx�T�@0��`hk#�j�D��(�k� &k�D�� �����k�D�������b��drjZyfR>�������2kF������m{������1��d�<��b�|�FL�"Y,�����1��d�<��b�|���/��� &�����C1���+�5�5H��@�C�01��	�����abYC<��m�����x�5"&Kh�9�L���//���%1�-�r����^���k&��~�&FL6��Am��po�'X#b2���d
�k�{0�
#&��q-&��\�O��d��Y<��JpO�������:]	A��o��X�+!&�4��#&+Y��w���OM��Ti�k��#���Y������-�����d�-��n	�11��2Af	�1��-����k{���?E �	 &���nA��&�/��q��1��h�|�|�|���o���!&�q��1YI���/������������'��7 s7�������th����� shwKp�a�IG���2Kp�apwh���GX�@L��)�!�M1���w��7�|������^�I�D��C������}��1����^��J�g_�B~{������~;��)
���Tvt�BL:�GLZ�sC�9���%8�0��#@�p�%8�0�;�GLZ�#��	 &��q��&���f��A��h�|p���w/��o���!��q������������w/�d%�+����ne�9��o�%�.�=��������th����� shwKp�a�IG���2Kp�apwh���GX�@L��)�!�M1���w��7�|������^�I�D��C������}��1����^��J��?>.���rY������C�r�1�2�����[�IG����IKp�a2G���p����th� ��wG����IKp��=�d��"���l|� �|����8�����M4_>Y>N�{��7�|���8�����$�bdJ���%��s%1��)FL.��_��:*;;l!&�9�"&�9�"��9����C(b��C(���C(��9�"&����m}z884&��l��g+��'����������I�4��B��g��'�}���1�������J�S��%?��%���O�d�M�+�c�������� &=�,�1Y���2O ��{A`��#&=�,�AV���p��`�dA`t_k &��S��B��b��I�=�Pd��{c>�Z���6�� k�'T+�C�m�1��O�V�d-�/^�Ln�w\F�K�,G��'���/[l�]��rb��cb��e8���c�Z�#&-�9�!�Z����cb� �mK1�����@s����|�@��"Y,�����1��d�<�b�|���/��� &����1YK��+W��7�������o�9��y������{������-�d������21i	�1A��2������	o[���=5�@L6g�����by�^�����I_$��A����7�}�,�1Y������Z�W�9"?�lX-+����]��Cd���j;[�ALZ�sCL:�G�Y�s��#@�p��%8�0�#@�p�[�sCL:$�m	 &���p`hN1����2_$���{1^�z#&}�,�AV����p�E�X�d1^�z#&kI����|���������xV��f���[mg�=�IKp�a�IG���2Kp�apwh����� shwKp�a�IG���-�d���	 &�3��A��d�<p/��Wo��/��� �������H���,��Wo�d-��VL�'�T}�$&{�;��#�%��KWgGm����4!�I-R �,�y���)��<� �<@�HwhB� ��-	 &���pP�G1����^2���{qf>"�>(�� +��G�}P,�1Y����d-�����?k�����L������~9����
�������!1��E
�4!p��"b�����)�n�Cb�DR�%�d[�
� &�q��A��b�p/��Gb���9d��������s &�3����O���^*7�3!����L�#������-6��Pp/b� 0O���@L� +�Sw�{Y0
b� 0O�d�@L���<uGLzI��#��l�S�A ?�d~V�=d����n��5
1�J�.Af��5
�����v�\���	�}�
���c�dEi��>;���/�l�S?��^�dA`��#&=�,�AV���p��`�dA`��#�<�,���y�����4mG1�v���@~����\{"�\	������kb���]<����k�]	��#&���F!&��������������~�.9�����}�
�EL��;b���id�y�wO �AL��;����i�^����IO I�v�mwJ8 �'������'����]<����F!&]	��#����F����]<b���kb�>���o_�Byj�t�d�Ny�!�{��(�1Y����IO �A���;�=�,�1Y���2O ��{A`��#&=�$M�@L��)�� ��b2?+��2W�v�p�����t%h� ���wW�v��I;n�Q����Y:)���2y��%1���!/?x�L�Z?��^�d1^�z#&}�,�AV����p�E�X�d1^�z#�|�,���x�����E�<�F1�ng���@����"�Z����cb��e8���c�Z�#&-�9�!&�����O�|�����LO���p@��"59��Y?��^�dX�"&=�,�
AV���p��@*�dX�"�<�,�
�`y�����TmE1�V����@1��b�\z#�\�������K$b���},����K$�]���"&���D"&��}�7�������h�L�G����A��aWvP��dNP��!&=��A���np�4g:�dNP��!�<���9Ay�����tmC1�6���@q����l#d��������61iK�-A���6������n�l������j����1Y�l�tz�=r�A��-{��r� &s���
1�h�t���<w��g�9�!&s���
A�h�tp�	�s7��g��k���9�@Lgf� �%�w7~���I[rnq27~��p�%���t�g���&w���r��F�������[t�gL���/;(gb2'(������L� �	�s7�{�3b2'(��d���L���<wCLzJ��!��l�S��@�8�dqf�2[rnqpw�g���%�� s�g
w[rnq�I7~����lrw,�_�R�����4gv��0�_^��@vP��dNP��!&=��A���np�4g:�dNP��!�<���9Ay�����tmC1�6���@q����l#d��������61iK�-A���6������n�l�����X<)_��r���	�i��C���O^y����������C����y2"��P����������C���y2�=%�}�����= &��<p�"����f� ���wg�V	�V���d����
�sb��U�d6���i�����{�ezZ��<j�>y��3����L"&���lAL����A��&d�C������f�A�nvn�g�	���I���$��l%���������{��;��C6�h#9������>+���D�4��.�f�����JT�m��u��z�)������'������4}5n���69�j�{��W�~�i���-n�����3f�����8}=z��EAoo�y]�m��l��20P;e�~���K�s���&���_6�d�a�d���&OM��;��V�F�U��	�H��� &��D�D�E]U�U@"m"&#��*���R������Uw���Xb&���]z��f�f���z�DL���7b��byd�x��
w_$��AL���7���by�^�����I_$��n��vF��x�����[n��~��r�9���{�)��zk��>�������������EecGG�}����{��r�QG�f�mV��#�����+]t���/�E�IWW���7O8�9�������9s�����4������/��HF����3R�E/z��p�	r����:pllL���>���.�\r�<���d�����^=�Py�K_*{��w����;��S~��_�e�]&>���j3g���?��r��G�I'�$�������^��������G��as
�1i����\�"��,&�5����E�5�dL�kj!&����v��+�w�����S�y�m{����[����{b27*��^q�N� ���kG�{��;b27*�d^q�N����vDLz�I�6"��l������������|�S�22���Ty��o|C���G���:�����<H*�Mt��7�������7��������I���?m�V�H�}��x��������5�yM9N�j��?�y2S��8�x�	3"Re�>�#6U�j��{L�<�Ls�:�QGU��Ta�m�Z�>�h��?(t��*AU�~�3�1"T��[n):ZR�dx��������������.����1�r��,�t%��i�[GL�c��� K����x����i����Y_q�����#������v�w�K��v�k��1�P�f�d �M�"��
��@`��EL6�Al��po(P3b2X���b�����@��o�[#�n��FQIWOL����4��Qud���F�o��L����J�����W\ad��V�={�iS8�|#<_��W���3�P�$���K���������c�9���T�**�����Ec^�����;�l���M���*AU����/�XN9�3��-oy����buJW
���}��������w��HK���#%�����i[5���~���z�?��L�N���o[N>�d#-c�Y�d���x������o1�u��,M#�:���NWBL�i�[GL6f}��19��a���	�q���r�~�r����yh���1Y�#�b2��:�J����te�d%�X[�X�+����G�-�d,���M1��ZTOG����>g�Z��5��a=1������N�g4������������Vu������`F%�#?�����O7S�~�k_�m���"N�xUI��������~�E�
D��g]����o�4��KGo������'������Ne������.KV�8?�����"TGij�>���_����*A�Gz�Q�o}�[�������T���0����A�TA�u���4��#&��NWB��i�[�{<��J��4�x�������hB����r�����`���>��������Z����kCL�c�(3���pmp��Qf�d#:��d��6��Ft��!&��%sk	 &[�������~��F����g�}�t�'&?��A����]��N��^T�}�K_���?����|�#��:
��?�����o��6J��w�aD���|���-�}�{����S����o����jFD�u��N���C����>3�R%�N���&�u������~�;��'?i�b����\s�5f���>jX�3/����;��V��"t�h��~�����f�C�e�	���t�s#&���lA�������lB� &C������f�-#c����[&��U�*#��W���!���7�����C�"&C�m�A��O�V��"�8/b�1�P��Pd��{c>�Z��������>m\_G9��U���g=�4����N�����^�������:�jz��Ru�������N8A~����iW�<�H���������
90P9M�>�QG9��E�*"�
Y��-��b$������M��GyD����K.��y�;�ad�M7�d�N���m��w����x���������I�S�������~������v��&��������u�d�3"T�/����A�TA�u���4��#&��NWB��i�[�{<��J��4�x���������r��cFRj�}v���^<C6���ypF�d�����g�G�e�	���g�GLf�	�ApFz�g�	�10�[F1�2��]���7�U ���8�����3���T����|�K^b���~����r��g����69��C����x�����so��#<����a���������+ud�JG}.��1�w�}f�����/
�.]j�Y��i��fFk�(J�*1U�n��&�tC���������������*7UH���p�
k��bT��UA����h�� ;� �L� �	�s7�{�3b2'(��d���L���<wCLz�3b�9����R.�qT�]:e:���n9u���`����=�`�FL��A�&�n���1�&�nY`����&�n�d`��o�d���oa}����e�O�d�g-�3uTc��I}�����=Y-
U.�3_�������+�]w������ZT"����w�Q:;;+�����<�����S�.\���v�/�T�n��ff��t��������|F���7�ifu
W��o��yvf:����*2�9�3�����������luTh___M������r����gT��I�EE�>W3�����3.�A��S/�����3AY���_�sHu���.���E��-}�����R="�_2U����H�m���\]E�����.��T�	���{s��=�/�H�ZZ��e�
�������6n���`�^�>������c/��:�~���r��|����6zApo����c��3q������jp_M"����3�7�z@O�#�A:[n�e�r�YO &��]�e�3u����w��]f*�Y�f��~��L1��;�iP/��RY�`A�(���)���{�mFW���t�M��R:��>�Q/������o~��M��.��L-����Y���7�zq��H������������h������o��!Is��Mo2���gE�����f�!�"Z���+�;��#�������������w]�U��\TL�3;Y @� �J-��k��-/*=bb�������2�e��� @��z@@�l��6��+�%�$���I{-���H���w3bP���#�v�uW#��I��T�U���K����w*�tV�V�	������|��EG)�s�=���:N��W��S�u�QfD����z:��O>i�f����>�<K1���[���\y��&�����{����q�_��U)�,~��1������zw�����0������}�k����}��'r�*Oe��/|A��k�\q:�/o�\	��N�;����l��F52|=��e�=:rSP�_��V�����%�����o�����!�8�����s:������v�U7���^��l%��^�����Ui�xnZ~��I����L��d)��C^{���;��������l�V�X�v�����:�������^G*{��78��!�8������~'300 :�K�=�N+�����93NQ���o��A��?��:w����T���yg�k�Rt�$��\+O[��V	���}Nf��!��D���7�FbRGA�~��r���G]3U�^$���0�/������^-Z$��v����.5Sd���N����������~X^���8��\G@VM��KG}~�+_)?cRG�w�q���;�����$������$?���1�����1��sO������=����+w�u�����������O?m�A�����k��������������\nd��_��>�F�d�>p�}��Q
��9<c�5���\����}��9�9�6��r$�����r����H�I���#��t�tW>�>�+��4�,{�:cKzS�����@?k��!���p���j"q�y�d��Ux�a5�8�p����
���&���B1���IO����|�y�����c�=*��P!x������O<�D������>_QG$�h������������'?������J}�����:�L�S���?�����^G;�����V��c�=fF>���7�t�y�d�3C�z�)����O�,�����fJ�n��<�R���Z��|}���kuD��>�1�lK���y�{���z����SA��W���v����$'�tR��[�a�Z[�������L9���������\+"&[�A��hMU�dk�#&�s�G����+��Fet|���m����!�xfb)-��4!�I-R �,�y���)��<� �<@�HwhB� ��-	 &������Tn���,:
���-U��}����X�9�:�,�<��#F0�d|��_/��?�c�]x��^gF'~�������e5�|�A����l��=����(H����I���0u��J���#Uf^���/��/F6�y��f]�$��W��o�Q>����q:���Z�~������o�Zw�UW�;��N3�T��s6c,���K5d�X�+�=M#�:b2�t%�d�F�u��c����L�����������o��g���s�a^������<��\��������M4_>Y>N�{��7�|���8��� �M4_>�����b�7Q���d���69�����C�=}��9��c���H��U%�.*�t���l�@�m��*r� �v���G�X��:������y&���7o^E�J�O}�S�D*���:�R�����T�S�V?�����7���i�T����:�S����w���feE�d��������)?���!�":��g?�Y#(O?�ty���Wf������)pu�i�1�r��,�t%��i�[GL�c��� K����x����i����X_��Q�������&`�&���C��]�NZ,�IhB� Z�@�Y@�w-R &-�yA�y�h���<� &=@$E[@L��ii��j��I}�����j�gUY���>�y����i#:Uh�4��<H5��^{��1o��y�K^bFJ�x�Q��\���I�<���:K���;�l$�
O�B�O����|*(;�0�����1Q��5.��B3��
�w���o�[y�[�"�l�3�<S��w_�={���P��?�y���+�����5������~�##@���:������t�7�|����ZT����X��AL���
�,�t%��i�[GL�c��� K����x����i����X��pL��fX�xp�l<�S���ON~Q�,-��� &����1��g�l�������_�y�!&����A��g�lp�K�o?��_�dk���9m$���~���w�C�;�<3���#�42Q��JK�U����������$�ME�N�z�������|#u��~I��O%���7��M���~��h�"��������N<���e���}~�>R����:��mo{�����T�����K�l�o����T��0���n��f���'�,��J���LJ���w�y�QGeD�>s��K.1S����.f�������r>�Q0�"�x������o1�u��,M#�:���NWBL�i�[GL�c��3r��+����M���9h�^y�1C�T�BLV���������
H�M�G]U1Y$�&�,��2p�i1	4e�@LFG��l$&�U�|����.7�p����~���0�]���z������O������/�*+;;;M�JC��o}�[+�G�/5NG8����x�b�Bphh����N:I��*<W/* �u|��_��!��C�t���Ty�����f������<��������2u������gm�Uz��'a�:.�O�dh�k�#����������BL�as
A���Zp_�"�b2&�5��kX4Z[�rJ~����n5���D���G>�������(�nb�.��;���-� ��%�N�G\�b�.��;d��-��X��DLGL�@L���XVG!���v��L�Z�5�v�m��?���v�4~�o�����Q�P���3(u��>�R?@�HE}�����e��F����)]/��b�����d0BQ�
���v��_\s�5&NG@�V���n��q�r����o\f�K��{����L�����c�1����9�&.��dH���d�<bm�=��:��J��d�HW��{%�X[��X�+� &+ydm%��/��R��zX�K����%���L�5�X��b� 0O���@L� +�Sw�{Y0
b� 0O�d�@L���<uGLzI��#��l�S�A ?�d~V�=d����n��5
1�J�.Af��5
�����v�\���	^r���{��,^�X�dy��.y�qC���������gO��O��s!������>i�������gO�O��s�=?+�=�>i��� &��lp,(H1Y�Cw�<�P�;�sEL:�sE�9�s��<�P��<�P�d~x����w��<�Di��fv����w���dUO�dad^�^0N� +��K��`,�1Y��������02/�I/I���mxR8$�%���K������M��Ps�AL�3��� ���ww�6�6��c���������a���q��P��o��r�@�$�z"&#������pYad^��c�$����� ��`,����y	@Lz�H�6$��l���!A /�d^R��d�m2����{b���M�
5���3�������������g&�W�?�>f��;�����\�g)�DL%��?b���YdE���w?�fAL%��?����Y�^�����I?��~��wN8"�&������#���U�[asBL:#�J� ���wg�V	�V�����.Y9)^;,�y�uw��`�n����O��'b�02/�I/'A�F�%�^0N��,��K����I�^�����$iC��6<)�@L�%��A���&�m��� &��d@��Ps���;C��Ij�1���'����7��Y�����R�Vs���^7Kf�w�O��DL���3b��B�d�py�wo(%BL���3���B��^����Io(I�f�mvB8!��,B��/����m4�m���!&���F#�l�������m4b���[b2?��i�+���\>"�-/���6����lH����?Q�1Y����Io(%B����3���,�1Y���2o(%�{!\�:#&��$Q�@L��	�p P�b�-��27~��p�%���t�g� �%�w7~���I[rnq��b�n�oT��rXzb�n<�S^��r��}�!&���1�
e�D�B��u��7��!&���A�
e�Dp/��[g��7�$j3��6;!�@L���A���6������n�l�d��������61iK�-1Y��_������7�3;�������%BL���3b��B�d�py�wo(%BL���3���B��^����Io(I�f�mvB8!��,B��/����m4�m���!&���F#�l�������m4b���[b��G������n5���2�y��3%BL���3b��B�d�py�wo(%BL���3���B��^����Io(I�f�mvB8!��,B��/����m4�m���!&���F#�l�������m4b���[b���VL��7
��W����.�����nV�D��B��uFLzCY(��.o���
e�D��B��uF�yCY(����1�
%���b��N��"�Eh��E�������-9�8��?�h�-9�8�����FL��s�CL�761-��6"���J��*����S>��
d��3w2�dnT^;"&����A����p��3w2�dnT^;"�������Qy������dmD1�F'�C�@Q������#����D����},b���K$����},����D"&]���"&���N����Q���+d�J��=�)�Ly���f;��y(������4OFYJ����?�<�y(��� ��4OF�����b�?S2��d{��V�V���dV�������*b�
�s���U�[asBL:#�J��,���G��KW�CO��L����;C����;b27*��^q�N� ���kG�{��;b27*�d^q�N����vDLz�I�6"��l����@�(�dQb��d��\"��B�>1i��%A�B�>���\"�.��c������q����r�}�&x��CN:�_N9h0w2�dnT^;"&����A����p��3w2�dnT^;"�������Qy������dmD1�F'�C�@Q������#����D����},b���K$����},����D"&]���"&��{��	���#���GMp_O��s����Y��!&s���1�g�d����v��W���!&s���A�g�dp���kG��W�$k#��6:
�@L%f�Af��%�.��c���\"d.��c�n��%1�B�>1Y��s+������W���N������~�f�#GJ�dH� &@��A�R�.p5GJ�dH� �@���9 �����mA1��������7�(�
5���3�������� sgh��6��c��m2 &�S���k���]����P�|����+����$b��.�
b2*�r1YE��G�].��,���� ���\�eQW�QqS,"�dD����o�I�D��!����l�{H�����lB� �B���
�l6![�!�f�FLf�i�r�����W���i����C>��Y���.��DL6b��6�dk�#�������l
w�[C�5U���N����S� &���I� �Ae��`�)���Ae�,
��"p�Aeb2
��"��$�v���q���+���&M}���'����n6�da�d@�����6I��l(P3��m�1�P�f�d �M���	�@���@`I�r���������F"�����~8���,J�O��E���(1?��~8���,J����''�g\)7�7nv�tw�?2 ���/��z�1��P�v�d���"��
��0\�eEL6#�A�k��poF(L;b2W���b����#��5��5�����������I���y	@�y�X8	�#������p�dad&����������G�vW��A����^2$:z����lF(L;b2�fYd��i�{���"&�
�� ��YV�7#�1�+Y[O1��s�@��b�]�@Yad^��c�$����� ��`,����y	@Lz�X8	b�02�d��\~���u����H\�vs���������R6Y�MjFL�$-��	�@�p�IZ�d@��d��6I�&�5#&�%m�	 &[~
8�@L��+� +J�O���X4b�(1?�d~8������GL��X4b�(�R���i���1��y��	�:�k��-C��������lD'\b2�F�d���k�{8��2#&�	�� ��Qf�7��
1�-�[K1�Z�T�����B��B��u��7��!&���A�
e�Dp/��[g��7��!&�*w��������|���M���-��M������DL��E]ALF�].� +���������eQWdQq�����"�
b2*n�E$����R�M1��hv>Y6��-pI7;7b2�M�YH������&db2$�����l6�Z�|\�r�ry���r�{����]o��L"&���� &��.C��QD]�{T��b��2��+������^Fu17�"@LF�M)�&���M4;�,�M������1��&d�,$���p�f�1�nvn�d6�f-�>3!?�t��r�x��k�1���`��L"&���� &��.C��QD]�{T��b��2��+������^Fu17�"@LF�M)�&���M4;�,�M������1��&d�,$���p�f�1�nvn�d6�f-O-�����o-w=|�^y��3d�@gy_��d=*��!&�3�WAV�J�}p��^�d=*��!��3�W���������
�!��l
w�B������ �ra��	����J�����{'�w���=&������J�����n��+���;F�GXYn�i�ny�)3e�!�dJ� &[s2dpo
��TEL��;���!������p�jx������`����$F�� ���Q0�AL� ��AsM�� ��1sM�d
��;F��������X^��`F�|���d�Y]��Q�]����$Qv &�`�)���Ae��`�)���Aeb2
��"p�Aeb2
f���b��)	_��H6�� k�(D����<'b�9�=d!�6�	���B�@L���<'b�9��SS�����/���i�Me��o�@���%]��f1�E5�~�dX�Y�dYd���{X�Y��Yd��G������Yd��GL��K��@L��=�!�L1��0wYnT^;��+�����Qy�� ��3w2��F��#b�+�����Q�����r���������=eH���W�{�e(m���l��@���5ZS1��2���@k�"&[����	 &�3��@LC[�AV�$��G�\S1Y�$�Y�5E�^�$��d�5E�5H
�x��I��E����M��^�`@�|a���~�$#&���� &��.CL�QD]�{T��b��2��+�������^Fu17�"@LF�M)�&���M4;�,�M������1��&d�,$���p�f�1�nvn�d6�<-��O��W��n-w?r�>y����������d5�8���8��� ������{��U��D�l#��p���j"q��q8S%>�d|�T��7�Io(�&B�5E���`m�1�Q�� X�&�{SDA: &�`m�1�Q�������G�GXY��������
��
�e(m���l��@���5ZS1��2���@k�"&[����	 &�3��@LC[�AV�$��G�\S1Y�$�Y�5E�^�$��d�5E�5H
���;����,/�m�A�|�U�d�M����W1YM$�6b2��*��j"q���su�d5�8���8������H�m�d�T�O1�9!��b����dM�� X�&EL6E��,��I��Q��� X�&EL6E������<�hR���%2=]���<Z�?_?Kv��[:;;��#&�b	�1q���X���{p�u &�b	�Aq�p��%�N�dp�h�d��S> &}P��A����^p�M4_>�d>N�{!�|����8�����M4_>�d>NY�TF>�lR>�������r��_6$�n�+����2�6XAL��$ �������l
w�[C�5U���N����S� &���I� �Ae��`�)���Ae�,
��"p�Aeb2
��"��$�w<�bJ����r�C���W/�#����3���uFL��ab2�:%�u�D�����@L��ab2�:%�^J�]���)����`�(�@L���'�,%�}���i����<���A��g�'#��P��1��i����<��Y6<%?��J��M���G��O^���lvWy_z1��o1�u��,M#�:���NWBL�i�[G��c���4�x���x���b2.o�A���_��W9��3kb�=�\�����2w�����;LN>���}l��N���/�t�������Su�W ����~�
�%K�����6�(|A*SSS��@�������'����UP!�t����|��������V���u�^��'02>-W�5)?�f����[u����y����<99)ccc��*��d��+s�	���Kf������:R��������������oVv�v_�|������Y�����3~�=���9Ay��7����CCC���K���+����:�9	 &s��ZI��+��:��N;M�8��B1t� @��	�O�����7�[����)���'d�M��X� @��:A@o��&�u�T���@Le�Y�@IDAT����` P��C=$?��j���/�QMox�D�uM/{��wa���g����0���t�1c#&+���{0�
3�eC<������2��k��po����L�>���4g����zXUG���:bR�gX���yf��|�G��L�a��d����%�l�%�uM��yCG�q�yq��L�kK�-N�#u��Te7�E��^����L���e�L�����/���,�Ig������:*�Y?��5��!���C�>hS*#.\(�_~�~��mz���a�JO?��y1�m���bi�xe��*���������n���^{����X��=}N�
�����C�^2����(�3&+pD�����UF�����s�d�*3��}��3d�N}��[k&d��m2��Ij�1�w�6�nC�=�gL�3����m�������M�1iC����brm8K#2 &3��� 5GJ����b2�)d9 ��Ps�DL���b����i��9K���L�GM�������d��d�d����i1	tUY�H�p���b�
H�MY$�Ue�^$�&b2h�D'�������G1��e�L�f����=�fY���iG����,+��
�����YV�d3B��G����X!��6*���f9��}r��~�b���$��$Qv &�`�)� �Ae��`�)���Ae�,
��"p�Aeb2
f���b��)	_��H6�� k�(D����<'b�9�=d!�6�	���B�@L���<'b�9�<=�&����G����x�������d��=5)�5H��@LF�\SAV�$��G�\S1Y�$�Y�5E�^�$��d�i�d�S� &}�l�A��Q�pA�yN�dsF!z �BPm�������A�yN�dsFyzLLN������.=��w�[��������0F�d��5d�Lb��{��5��Lb�A���\[��Lb�AL��L�V@L��:5!��b��id9 ��Ps�DL����,�)��R�.��Ps�DL��������<�lZ����dx�$&�z:���g��;�JGGGEFLV�����������G�
�GC]Q1Y�#��,��Bp��m1
5�"@LFN9�$���I�q.Yc>�Z��l�����|B�"�B�m�����jEL�"�8/b�1���%)���,�g�N���v���[���L/��4�x���x���di����u�b2M#�:�,�t%��i�[GL�cM���qyS
^	 &��l�A�O�F�C�01b�!�`��`h&�{C<����6L��l��p�'~�D�ydB&&K�/?�_�~a�l4��"b�G�
�d4��d8�m�=��B��
�6d�PW�{�h��h�)�b22p�A�'��O��s!��	�
�Pd�EL6��A�l��po�'T+b2��y���m���-���+?gr���r���j���T��
�6��PWB�U����h�+
!&+pD�@�EC]Q�8�m &���Pd����)��>i6�� k�'T+�C�m�1��O�VY(�����1�P���Pd�EL6�S���k���k�e�Hir�=���W2(;m�S�
1Y�#�b2��B�
�6�
uE!�d�h�h�+
��G�
�d4��L18� ��b�'���d���j�{(���"&�	�� E�q^�7��1�l�����|������|���leILn�i����A�{���T��
�6��PWB�U����h�+
!&+pD�@�EC]Q�8�m &���Pd����)��>i6�� k�'T+�C�m�1��O�VY(�����1�P���Pd�EL6�S�������/����L�`_����r�.}��J��L������;U
A��q�a�J!&S0"�"�"�N��{
F�U�dD���J17� ��b�/�F�d���k�{8��2#&�	�� ��Qf�7��
1�m����Ft���ML�����<�hJ��A���|�Q�r�^����FM"&������A�xYqf>"���b�����|D �|P,������@L��H�v$��l���1A '�dNP�!�<@�HwhB� Z�@�Y@�w-R &-�yALz�X��?~�T�����O�NzQ��d��xfg�'b��"�
b2*�r1YE��G�].��,���� ���\�eQW�QqS,"�dD����o�I�D��!����l�{H�����lB� �B���
�l6![�!�f�FLf��m��E�����dx����C�������7�.�DL�QD]ALF�].� +���������eQWdQq�����"�
b2*n�E$����R�M1��hv>Y6��-pI7;7b2�M�YH������&db2$�����l6�-^�R~��Y��$&���GN9h@v}^O9%b��"�
b2*�r1YE��G�].��,���� ���\�eQW�QqS,"�dD����o�I�D��!����l�{H�����lB� �B���
�l6![�!�f�FLf��m���Q���+���S&�V�v���v�+�DL�QD]ALF�].� +���������eQWdQq�����"�
b2*n�E$����R�M1��hv>Y6��-pI7;7b2�M�YH������&db2$�����l6�-�<=!�9w�<��$&�:��G��{HGG)+b���[b���m4����[����F#&m���!����F����[b����K1����#�@S�����u@�yCY(����1�
e�D�B��u��7��!&���1�
e9����|������f����,��������DL�qE]ALF�].� +���������eQWdQq�����"�
b2*n�E$����R�M1��hv>Y6��-pI7;7b2�M�YH������&db2$�����l6.-�:g������O��3y�}�����P�I��t�k���g�� s�gw{v.��Iz��2{v.�pw�g���gGd{@L����� ��b�!��2�8s'�{nT^;"&����A����p��3w2�dnT^;"&��,'��K���w������<x�9���fN����,��������\AVFu�Qq��!&�(�� ���.�{E��dT��H16� ��b�7��|�l6![��nvn�d6��-��t�s�=�M��dH�����l\Z.�nX~s��,ZVz��n����^�/{l�k�"&]���"&���D"�\�������K$b���},����K$�]���"&������}~8:4$��l��k#��+���������I�8s'C��F��#�����1�����I�8����wT��t�<��$&���%�4 ��g� &���� &��.C��QD]�{T��b��2��+������^Fu17�"@LF�M)�&���M4;�,�M������1��&d�,$���p�f�1�nvn�d6������^�\>9i����)/?�_��w�l#&]���"&���D"�\�������K$b���},����K$�]���"&������}~8:4$��l��k#��+���������I�8s'C��F��#�����1�����I�8���G��?�^&�>:a�uv��,��x���AL�QE]ALF�].� +���������eQWdQq�����"�
b2*n�E$����R�M1��hv>Y6��-pI7;7b2�M�YH������&db2$�����l6.-S�������-�O����I��}�19(��:�.pb��Bd�B���!1��!A��!��B��mk���>=@L6���A��f�\p���gO��O��s!������>i�������gO��O�������r��c�|�$&����L�: ���ALV�����������G�
�GC]Q1Y�#��,��Bp��m1
5�"@LFN9�$���I�q.Yc>�Z��l�����|B�"�B�m�����jEL�"�8/b�1������aD�Y2e���M����~�k�>��X�X��<�P�<�P�;�sEL:�sE�9�s��<�P��<B��b��O������lE����?�����1��f�\���|���O��s!&����1��fe�k��s�\)�<U�[�������w�GLV�����������G�
�GC]Q1Y�#��,��Bp��m1
5�"@LFN9�$���I�q.Yc>�Z��l�����|B�"�B�m�����jEL�"�8/b�1�����\�R�{t���gK�p@���###�x�b����M7���� &���A�f�Tp/�cW��G�R!�
����aH��,��k��Zu�8XT@LV��� I7;7����lAL����A��&d�C������f�1����S�����7E��;�%���k���1�d8�����lB� �B���
�l6![�!�f�F�e�	���t�s#&����v@L�����_�	 &�� ���NW�{�F�u�d<��J�4�x�p��:]	1��o1��d2��W~�L��{L&&Ku��W^���c�d8�����h�6 ����L�L4A�A�f&G�e�	���x3�#&3����@L��'��_�	 &��Y<��JpO�������:]	A��o��X�+!&�4��#&�����+���Ge��iSh��������&�a�������%�NYp�u��.��;���-� ��%�N�G\�b�.v����I�%�����=�,�t%��i�[GL�c��� K����x����i���aY���a���yrq2|2Y^�U��r�����b2,����u��� ��n���|'b28��du��	����@L����u�br8�����b2��G��c���4�x���x���di����u�b2M#�:b2,�k��_^=,>Q��u�M;����E;u &����1YK�������{],�w"&�#�[AVK��p��n�d],�\ &����KX	 &��{Y<��JpO�������:]	A��o��X�+!&�4��#&�����q��e+���&L��C�r�>}r��������fGL��|'�,8���^K�������@���|'��#�[1Y;���u�$��_��x�A�u���4��#&��NWB��i�[�{<��J��4�x�����-����x��p��)���!���S��%�-���n�t�M����eQWdQq�����"�
b2*�r1YE��G�].��,�`e#��\�N(/g�"���w�d�X�+�=M#�:b2�t%Y�F�u��c����L������z2y��7/Z.�}T�J���w��:�[��� &�������Ae�,
��"p�Aeb2
��"�$Qv�=
��"��$�XG &����X?	 &��wY<��JpO�������:]	A��o��X�+!&�4��#&����W��o�e+�M�=���W�%3��!&��������mA
uE!�W�����������G�
�GC]Q1Y���u�br:�����b2�9G��c���4�x���x���di����u�b2M#�:b2<��n��^?"O,*
��a^��t�N�f�����+* &+pD�@�EC]Q�8�m &���(� ��m��PWBLV�`c"��\�N&/e�#���w�d�X�+�=M#�:b2�t%Y�F�u��c����L��������{G��k����O�b[l�)G��!�l3�����b�G�
Y4���^�#�b2��B�
�6�
uE!�d6�!��u�d�R�?��x�A�u���4��#&��NWB��i�[�{<��J��4�x����������s������)6{�S�yJ^��b2<��
��
�6d�PW�{�h��h�+
!�*pD��{4���8�X� &����KY� &��sY<��JpO�������:]	A��o��X�+!&�4��#&��~f���u�
��������������4�����b�G�
Y4���^�#�b2��B�
�6�
uE!�d6�!��u�d�R�?��x�A�u���4��#&��NWB��i�[�{<��J��4�x������'��G����o���R�]���:l\�{d�M7
T0���E@���5ZS1��2���@k�"&[����	 &�3��@LC[�AV�$��G�\S1Y�$�Y�5E�^�$��d�5E�5H��Py�5+����������n�)yu2br�M���7H��l'`b2 ����N�&�d@�
R#&�	���p�FL6�C�ZM1�V�>~}'����� ��:]	�i����X�+!��4���=�t%�d�F�u�d���eX.�vD_4e
��xJN�wB�����qN�����;U
A��q�a�J!&S0"�"�"�N��{
F�U�dD���J17� ��b�/�F�d���k�{8��2#&�	�� ��Qf�7��
1�m����Ft���p��������	�t�YSr���r��]�I��fBL6E��,��I��Q��� X�&E�5E���`m�1��R�����q�P��x��x������o1�u��,M#�:���NWBL�i�[GL�a}������������3�e��'�et"&��S1v��,#�*�#�N�BL�`D\E�E��*��������)�b2*n�A�����>*��{nM�g�!�/�w�����;T����nr��V�c������,_��$�9s�ttt�'#27��F������<������)������d�&''E?��2k�����x%w�8s'���~Z���d�-��GG7z��~y��1z=����K����&���JS��v������i��

�)J���������G���[���0�:R����}��a�����k�D�����-���>�3gN�����_ww��$�G]Uf��%�t�R�7u��6�j����_��9�$���I�\D��+���~�i���K@� @ ���i���.���n���D��������	���wT� @��+����={�k�!PA1Y��
�'�[o�UN?�������k�]b{��g����?^���7������t���N����u��I;�E��^����:�l��Fv�a�'K�����7O}<���)V����lF�X���t��.��XB����D~{S���%f2Y��dJ�|��l�Q2|�%
�]�Q���D�].����O?/��&�8��su��`�aF�U�	���{8��2���pm:RUG�������p�d���|7�MV�V��@{�f�md���r����������:l���{k��������\{��Wkb=���[s����<c�5���
�rN�Xd�������G��W��K��n6{J^}H���&a��L�gL�QD]�Y�Qq�����"�
�����\�g�QD]�{T��b<c����u�br;�����b2��F��c���4�x���x���di����u�b2M#���g�<������n��T$H'�(��&E�T�EA,�?��"��
>�(
*�R$��HK TCMH��nv���]w���;s�y���3��{�9�}�<g���3�\���G�.��o��_�]����n�gK��w@LZ�b����:��<���nEz`��@VG2+���} �#��i�X@LZ�R$��Lf�T�2�<5���2i�eyjF�y[&-��������LZ�d@)6��O���@�<�\��F6u�N���{��bR�@L����� ��6,3����kCL�c�AF�_���
����C[5@LV��q���b��%� �c�V��K�.FL��v+!�\v1��X���.
�1i����;e���r�c���#zn-���k��� &�f1iEz`�@VGp�"=�br �#���u�>���b��4u�	 &��S)@L��L*Y@����	l����2�<5#�<�-��eyjFLz[&-b���[�u����_�m���t�������[AjjR,D���%�xm@�y�[29�K��������drYI4^��o�����hh�r��*�@.x@L��?����[	�.
�1i���� si��p�c�VBL�4�b�����n���6��������p���R��q�YiL����J��l&A�ldS1�
w��!�MU�d6����b�?c*@���7��dHLN��sA�d�2�E�^���b�sA�d�'�}f�\=s����+����Z9���d��
^����b2�Wb����*b2��I�gC ����l�S�?���T��7�Ioh#�
�����	��"��$&'d&������	��	��"��$^O<1��g+�Vy���A�q�j����e�����%y/�d6��$��!�MU�d6��p��@6U��p���I���o���$F� 19w�E�HLN �L0�{��I�E�H���;�C��@�<�lGPgTs����F9��#��%y/�d6��$��!�MU�d6��p��@6U��p���I���o���$F� 19w�E�HLN �L0�{��I�E�H��x��N���V���eA�����:�����x�K�^��l^	�I�gC ����l�#&��
�l�"&��NU���S� &��-H� +@br�&�� &���@��`.(�$&'�&�� &�x=�a[���x������Nm���U����������_�I�|KeGL�"��<���-�1Y�����I�|Ke�{)2~�#&��%{v����2@L&FXqY��R��TqV�1Y1�T;"�R�Yq2�W�*����TqV�1Y1�T:vvu�?�j�Kok����A������>3V���L�9$	b2��&�G�!���cb�#����8���nHj�d���b�������v��k��]v1b���[	A�����n�����ti���I;�}�~a������������!���G��5������'�e�"����wO`��EL���A�	l��p/�S3b�X�fN1��p�O1�]��������t8F����J,���t8F��������L�c�,��������v�jf����� ���9z�f�������!�b2��F�7������[#b�����P<���
mhb�d(��b��'�K�b��5� �c�V��K�.FL��v+!�\v1��X���.
�1i������:���[��g:�SM#j�[���?>��?=@Lz[&-�� O�p��LZ�d@��d���I�2�<5#&=�%m���O�����E� �J,��pO�c�,������� K�c�,p�J,����t8F����J,y��u�����M���k�c���i�I�����x�5"���
M�P<�����&F�����wohC#&C��X��U<y\:�v��k��]v1b���[	A�����n�����ti���I;�}���u�������X���Y}�:����IO(z�������"����w?\�eEL�#��A��k��p/G�O;b�W�fO1��p�M1]�����R�T0FN����,��T0FN���R��Lc�$������y��e��>���^��T#���8i����3��q���Rd��G���[*;�K��{1��o���Rd����_���#&K��|�@LV�r���b�n�dv��Jpwi���I;�n%�K�.��k�b��a#&�X��f��&�X"����I���w�-k�Z/u�,�tY�#&��Yy.Y����	�4iV�1Y9�4{"���Yy.�W�*����4i�k0@L���Z �b2"��d	�%
��EL&��`(�,�C��^�����EL&��`���-��n[,/�]d�s���i��4JCb2�����P<�d���&�{(o��IohC#�B�xk��7�����xh�b��*�<.�I������[	�.
�1i���� si��p�c�VBL�4�b��k���7�����������u"�l�$���E�.�4c�d�4+�� ��U�=��&��s!&+g�fOY�4+���Y��1�&Mr
&���4\"@LF��;�,�C��^�����E�%��`(��K01�^�������{mr�������b��g��f�4���?Zt[W~ &�p-�AV���v���Z.+b�!?�2?\�e�{9B~��~��5{�����+�@l����"D�EF�����1r�ddd�@���1r�GF���d*#'ALFF����Z����_h�����UW���>;V�{�wM�I@L�av� 3C=���0;@L��PA6����P(�����!D19�&��2� &��Af���w��]���c�VB��4�b���v+!&]v1b���[���mr����o�l��������\q�8YaT������:�d�H+J� �S����:��"&+��z'Y�H+J��0��	1�:R��A2\�@L��o�,������`����x���B�%%o<��qK:
1��`����x���jmm��_x_.��^>h���?8v���Z�����KZ�����,,#�%��Zp�ga!&-i��B������nI��b����"��Z���f�v� �c�V��K�.FL��v+!�\v1��X���.
�1i������&O��P���^^}����>9R�����L��R��)���
AV�]��"���`��A�"���V�]�)�$��"��T���@ �d4^Iz#����?���%��LB/�XY|vIF�=	��c���%��LB/�X����Pn~�Nf������o�$l�,#��ee_?�@L&g'�,��c���a���8���A�%g'��PK>1��!'�����
@LV�)�N�T0FN���R��Lc�$���R�T0FN����,���T0FN�br���������s����A�0}��mAL��� &S�!�,���=E�R!&#�J�+�,E�R�=��"&S�I�AE19�����@4��h���F�%�,���K21��^��������{z��"&��K21��^��*&�xk���W+����K����r��cd���U��F�����J� ��-� �'F+b2���d��J�X�BL&FH�AJ19H'���@%��PJ��,�Q��=*�t�#&��5�,*�t��=�Q� &�K�?b2�Q���|���2�-�_�}�tw�fhQ#�?FV]�Njkj�����2�<5#�<�-��eyjFLz[&-�� O�p��LZ�d@4W-�d�N����Af���w��]���c�VB��4�b���v+!&]v1b���[I����?�������a��dO��=F��X/
��I�Y1b2
��s ��3Kc���=b2:�4F ���=��3Kcb2
�����qV�&TH1Y!��!�R�#�c@Kab2�1R �b@Ka�S�#b2�� &S�#�����;���6��7;sY��O�l7�QZ��dJJb2%�� �"K�;�S1
b2"���#�R1
�#K�;b2%��t��nJ� TN1Y9��=dI	��x���BL&%o<�,������`����x���BL&%o|��|i��2�Yx�#�h����[7����g2%�1���id����)���1XJ�d)�������1�H�:��A7%\*'����U�������{<nIG!&��7A�[�QpOJ0�x�d<nIG!&��7�OL.m��������k�%�fJ���HYyb2%�1���id����)���1XJ�d)�������1�H�:��A7%\*'����U�������{<nIG!&��7A�[�QpOJ0�x�d<nIG!&��7�OLvt�������7}�K��U��+���+����C1���YdQ�����p��1�X:�d�p���Q���1�G�>���7'\*&���U����c%�{,l�!&#��A[�ApO�0V�d,l�!&#���OLJM���1N����\���9��1��*�����dJ #�A�E�Rw��2b�dD`)uG��2b�G�Rw�dJ I3� &��pA��b�rVI{"���7���%��LJ0�xY<nIG�=)�x����%��LJ0��>1Y__/]
+�W.Y$���s�N?b�l4�A�kr��@L&g'�,��c���a���8���A�%g'��PK>1��!'�����
@LV�)�N�T0FN���R��Lc�$���R�T0FN����,���T0FN�������k��ow���8�Ev��(#�js��@L&g'�,��c���a���8���A�%g'��PK>1��!'�����
@LV�)�N�T0FN���R��Lc�$���R�T0FN����,���T0FN���#��on["=�����vM��VM2~t]�Ar����d@����|��3��1�Z�1���d�{j�� &�3$��$������Uuuu��Y����o�'�|R�
����e��)������i������y���#w�q�<��c��[oIMM������v��.��"�'O.���������*�g����{O�����;������N�������������q������k��;��\e�U
��2��n��F����7r�HYo�������[�
+�P0N?@{��G���n�_|Q-Z$c��
����^���},�S0��	��G�y�dy@��n:�b2��!��t^��1:DL��+���bt������e���r�}m���Mi��wi��+r����d
c�@�������1F
�dh)A��1F
������d
I1(	 &��dwQ���r�
7�W\�E�#���]Y����(_���s��>��Cr�E�< ������*&U��������;��?�y�b�-�a���S~���SO=�E}���T����j���\�?�x��G?��"�s�=���H��yY�`��8�c��	D�~��'Gu������q�!�
����'���/RR?�����q��Ir����!�2@���Q���_�Z^y�Y�x��8�*1�\sM9����������H9@L�4$�,��&�{��1�c��#���p���	1�nHj�d�M��3n%y��6�������L��/L)kMh��#HN1��a��8����{r�q2 &�PK>A��a�p�C-��dr�d���s^2�*]x��grq�M6	VG�hS���2Pe�Yg�%��O�]���>��S�/�K �v�uW�:u���K]�x��w��v��G����+����T�q��*D��"s������r���A�~g�yf 5��H�y�:��s�@�������_��Q�F�W���@������$��Q��[m���JG���������\������w�+C�Z���^����.�<��l�����{�J+�$�G�-�����h����?���*�R+Js�R
�)�� 
��H����
R"&+������
R��H� &=@� %b�H��br�W�yo-�o�nq����9�����
R�;K��b2)�x�d��%����GL���t�,)�x���[�Q���?X	 &��dt]*%uU�nK�2P%��$lmm
�w���K���o����_��J��{l�J�K_���jE]}��q��yr�UW�e�]&���������MU��"P�������o|Cv�m7�0aB �������+e��7��/�8�o�u���>��@F~�;�	Vc�@�[Tj_��UW0~����E��_��W9����U�?������Q�qU�z���RS���V���V��9��#������-�l�����*ly��kx���Esy������� &=��K� �btw#�ye�y@�dF����=��!b�t^�d�CWL��~�%_�x��wtWP�c#�v�(�l��P��LkZ�i���A�WZ����hy��x��A��hy��WZ��i�$�`#��l3�����1#{�l�M��P�S�{,Y�${�w\����h�{��?���{;�~������5rRW1~�{���^z)���N�����*Cu%��R�8q��qw�yg�W�������_��_���'��S���P��?�)���j����v��R�`U�����t�U��CWb�����.�@t��i���Y���w^�j���D�s:N���~�+�{���U��Z�������[Af���w��]���c�VB��4�b���v+!&]v1b���[��+����.���zVL�_���^�����h�7j�Q���P��	�%� K/�P�'��`(b2�Cd	�%
��EL&���AM19��gp]����R���[o�,��B�Ue��z�v��}�Tq�+.ue��E��BRW`�*��:(X����U�^x�\w�u�
N��o��vp�I�5��w_iiiq��������*OUB~��_V4�r�)���;����k���VD�U���O:��UWI�����/�����tX����Ta�[�Z<��{k ��X��������v��J2��]w;�n%��K�.FL��v+�����n�����9=�������M���M���:w(q���E�%��`(��K01�^�����{x	�"&�c��&����38.N������Nu��m��&����`�{����0^r�%�����w�k�����n���i��'>!�_}p�����^�}�Y����d������FwXp/I���E��l���o��|����{;n������0`�n��[�^}���=&u�n�z���+5u+X�V6������0��g�qF���n���q��V��9y���a�v��z���??�p@A'�>��� +���Y��&\<?b�8�gd�	���\|�EL�&\<?b�8�g��d��n���K����dygo���6�!�Zd����/g��GLf3�2�gC ����l�#���
�l�"&��NU���Wu�W_}5X}��P���D�i��i��z�����{Q�<U���2_�� �������l  ����@V������;�cu�������7�zoJ�>U��M7�$zMZO��J�5�XCjkny���V��-����t������Y����<��������OV��x��\������ �l���r�-�no�7^��>��#O<����7��#�8��)���<x~��kU*a��s�������i����V�@ggg����q������T
���)�w�~QC����Z120$�z���������y���
��*z�r}���������{"�"^�������-����O���.z[}��+*#|�C�xO�t,����j5r�5���1��F�����2b��4iRZi�S������3�b����9&���p������455�����0�+%���� ���~�����m8�WY�`A�`H�M]e�U��M���k������&���������w����2P��nl���{����s�L�"�?���~������@��X]%��
7�|�`��~�U�p�?&^x�Yw�u�csI{��P�A����z�I��ZO?��m]WZi��q���n�z�9�[���T�rs��	2g��y�uu������*�w������'�p��}7ue�~����v�}w�{i�����c�9&�KE��
������������93�p�A� @	t��W�����&��_���\�o���=~Y�{��
@� �	��]�x@ M��4i�\7�pC ���M�~�]����l<���r���mQ_z��@���u������y���<����I��*-_|��`UN�q�_~y 5����_~9��:N��Xq�����w�+g�}�|�3�	V]���*7���Z/u�^��T1�2RWL�y���(�s;��cp�����}�4�����@L�}4�<���7�X��g�y&�����o��92�r��"ttww�\�W����c�Yg����������	������b_�I��pw`�}�g����x���n�9�J1���������,m�}�TS�-m�H6��L�n����
	�{;�)�g*�R7�����}s���)�!M�=n�=uIDAT��1:�/������k"�K�ex�g3�p�������5�o��\���;�M�81�����Cxr�~j�:Q�c=��s����_�}�:m���=u�S]9��D�^w�ur��G[�����bR�a�m^t�X��5_��/_]��"TW;�|����I���T��
��q�TWL���?�r������h5��+�\k��u[]���b���F )?����V[m�-��������=�X ��n�u���*�������]v�%�p�G ��a��E�^sR�5�G��bW�1�"����<���~�����FI�$���^���c2>�$#�K'������VPI��Z��{��_:��"}��������]�����q��-��MeT3f��Q���c2	��c��d|vIF�=	��c��d|vIF�������`]�����m8�W���D8*�Ce&����I]��+�t�w�T�mN����^{����^�Sq�RS�dU�v�m�����J�J�G}T6�t��"�����^�}��7���k���[o�/d����r._���]z�I��z����'�6�������Y�f
�����+R����{����z�z�I�>V�h��~�<���'�-iU�r�!})��DLz�; 9�l����P19������Bp���1i�z@!��f���y�.�Y/���Y�k&���Q�o�,���]�P.���fvdp��@6U��pG��=�TELf����	 &�3R���x ��zH���8���w�����;v��Vq��N�U����_�
Q?��U�?���t�MA��U��B�������g?��;,�Ud~�S��Gy$X��2)�o�!������c���/�Q��n��8�x�x��\���7ON=�Ty��'���O])����M���������Vv���k�jP���O�SQ�j�@LZP��� �c�V��K�.FL��v+!�\v1��X���.
�1i���TJL^9�C���e���+&��� ��,kOhp��$���	.�0�dB�1��=&����	����	.�0�'s8b2&8�
z��A?E��r��;���N;-�x���M���q������~����������_�b��P���>�������>�>g�q���'�|r )�;�<9��c
V#��*%o�����
B��OW2�} ������^pE����s���3'���w\�}�n�z�}�I�U�3g��M����o~3X��U��?�5�>���������0�{[n����]�#&�`-�AV���p���h�dQ,�O"��#.Z�E�x?�����h�dQ,�O�����&�s�,i����Q/G��,�������0.��4��r2�gC ����l�#���
�l�"&��NU���WU�o}�[����.���I���}�J��.�H~�����{�-�_}��?U��Ty���������OW�0��z�?��O�6�;��C����k�=`��3)������q��%�+u{U��^�������K�������'�q��w�~�ma���n�z�UW�C������_�������q�-��>��"����
�{��SN9%�&]��+.�~�����2;�n%��4�b��k����a����[	1�����v��J����ot�yY"�>�
��S+��D�l�~�;�8&�dLp	�!&�9�1�%��L0�p�dLp	��=!����1�1l�@L�)��@��UW%���G}t�jr���.BWG���
Vvuu+$U�C�=��X|��gd�}�	����OW^v�e���#�7�
A����[o�V[m�oR��n���F�RW/�8��n�����W^YTT�,�q���r�������p�
iy�-��f����T��7��b4�JI��U�i�qk��f�
������v�*Q���/��1c����v�I'���q��t����*�+��"��{��H��>XF�p��?�I����#��YXFp���_1���2B�Y����~�b��v-�d?�����`i���e�����b��N���#e�������
�f-�d6�� �{6������;�����*b2�T�O1��qUU�7*�tU���Q�[�dkmm
��@��U�d=zt��t�S])�����F����q��6v�Kt��V�������~��RWWHE���JS�#����S���<������qGqDn����tu�^�k��T�����7��-��2�bV�i_=�'��g�)����+<[ZZ����u�=�����Xkkk�kQ�y�Yg��\e�U�zMMM�2hNe�bUW�N�:5g1��I��5dv��Jpwi���I;�n%�K�.��k�b��a#&�X��J����n�������:{�s��8|�f�c�&���t���q�%��L�0N����|b29�8�q�%���d@L����j ����Y2�F{w�}��x�����rP�R]u�U��+#u�JK�����[��z����SO��!��#7�l�`E�J��mW_z��`[U���s�=��TI�"S�R�o��Y��%�*Bue�
�;��#���n��P��v�m���6mZ�Z�o�~��:u[V]����x������;�(tP�<U��=T���5K���j���{DW��*E�Zk���!�"o�q :�������M�??����ewK�����,,#�%��Zp�ga!&-i��BL����J�I��_�Xf�].�:z�3�������=�i��[^������fZdp��@6U��pG��=�TELf����	 &�3��
*�T��l�����2q�u�
�8-��t�������DW�5*��*�tK�b�w���s�����]�����*��V_�����}������z;vl�=������8��t��S���n���
+�Qk�*���^������4Occc�����Z=�| &�h#��X��������v��J2��]w;�n%��K�.FL��v+���?��P�x|�,i���l� �n�,S&5�)�c@L�����d
c��{h)AL�1F
�dh)�{
c�@L����� ����i�"!P�b�8gd>���	���|�@L��Z>'��<#=���j������|�@L��Z>g���sV�\sO����w/�
&��~�6�6��~��������l�A�ldS1�
w��!�MU�d6����b�?c*@���7��dHLN��sA�d�2�E�^���b�sA�d�ab��W��7(���+&WY�V����>��&�6�� &��]�$��!�MU�d6��p��@6U��p���I���o���$F� 19w�E�HLN �L0�{��I�E�HLN���ww���^,o��+&�F��;4��6��������j�d63���{6������;b����*b2�T�O1��1 ��b�����$&'�n���b���	�	��"p/@br1i���b����01���G�y�"���r�������M��c��4��\�P-���ff�p��@6U��pGL�=�TELf����	 &�3��@LzC[�AV����M0AL 19� 3�\P�HLN &M0AL 19&&�~z����ik�5�;m2B��,W�7���Z1���"&��
�l�"&�����{6������;U�@L�gLx#����� 1����	��`.(��,@brAf�������@L�`.(��,@br�������O�������~l�9p�f�:�����j�d63���{6������;b����*b2�T�O1��1 ��b�����$&'�n���b���	�	��"p/@br1i���b����rb��Y�r�}m���^1��ju��������&�7T� &��Y�$��!�MU�d6��p��@6U��p���I���o���$F� 19w�E�HLN �L0�{��I�E�HLN���_^&��}���n��\il���m�L������j�d63���{6������;b����*b2�T�O1��1 ��b�����$&'�n���b���	�	��"p/@br1i���b����rb���;�'� /����iD���u���H���E���,b����*b2��I�gC ����l�S�?���T��7�Ioh#�
�����	��"��$&'d&������	��	��"��$&'������r�����W���g�����F�JJ� &�qK:
1��`��p��-�(�dR���#&�qK:
�I	������Q��br��W���%���� KiE	�^��;!&SGZQBYE�R����V�1Y��;!&SGZQ�rb��[��n�@~�C��{z�Ni�#wi��V����
	 &�X�A�YP.��B&g��k �
�X�������B&��Ccy��b�n�dv��Jpwi���I;�n%�K�.��k�b��a#&�X����I�{�??���h�����gr�����;���I
n*��`��A�"���V�]�)���
AV�]��"���`��� &�j��X$�������'����^�����O��s#�J���w�tK�FL�f��1��n�����;f�������br�U��S�5������J1��[#�����p���1�
mhbY(o�p��641b2�UL1Y����C1i�@���v+���a#&�X��d.
��v��J�I��]���c�V�DL>1�]����2���`�Jcke�VM��6�n*��`��A�"���V�]�)���
AV�]��"���`��� &�j��X$�������'����^�����O��s#�J���w�tK�FL�f��1��n������,X.���������D��5��f�r�n#K'�%�b2��F�7������[#b�����P<���
mhb�d(��b��'�K�b��5� �c�V��K�.FL��v+!�\v1��X���.
�1i���T��lk�����@��!��"55";n<B>��(il�9��b22�T �R�9	�##Keb2��� �"#Ke�S�9	b222T	�d�L�	�b����9� ���\V��#��1��k���r������rY���iGL��Z.k%b��E�/oY"���]TR�c����=G��qu�1��b2��z#��"-���J�7b2-��� ���J�7��"-b2/zW�d��W
���$�N ���
M�P<�����&F�����wohC#&C�xkDLzC��1�	�t��r��vY�AW�o�I�r�.-2urCh~�@L���,��7����^�����I����G����,�}.�1Y�g��b����g0�	 &�&Af���w��]���c�VB��4�b���v+!&]v1b���[�R1y��r�Cm����br�*����-��F�n:�
	 &+�r7Y�@+L�
A��
1�2�
�!�*�r7����t��
A��� &�n��`�@L���!�|.�����>���M�x~Yq.����7�������>���M�x�J��/-�?��*s���4�V>�E��]K���
%�����A�
mhb���������641�,��F�{C�1���*&�������!���{
 ��X��������v��J2��]w;�n%��K�.FL��v+U*&_{w�\~�Ry���`xKS����������MH\�dE�R�� KiE	�^��;!&SGZQBYE�R����V�1Y&:U!�dN��>��>�"��3.V����?�����XY1*����?�b����?�����X�J���m]��[����������
���GK}j���s��0:��d���e�{m�Il�2#����k��?�a��ath�f��j�=�}�@L��dv��Jpwi���I;�n%�K�.��k�b��a#&�X��*�:���/���l�e�A��>� 'r��4��MI\�d�<tA�y�ZAJ�W�C����D�U�C�{�ZAJ�d��R��U9m\4z	 &�^	2;�n%��4�b��k����a����[	1�����v��JQ��u�������E]A�u&��q{��)k4�)�+ �����.2P+H	�
 y��������
 y�wP+H���]��b�*����@/���+Af���w��]���c�VB��4�b���v+!&]v1b���[)���{v����2�7�3H��J�r���i�F7%q�@��A�j)�^$]��V�AV$]��j)�@�KU@LV��q��%���{% ��X��������v��J2��]w;�n%��K�.FL��v+E�O�[&7>�&�_Z�������7�A;��)�+ �����.2P+H	�
 y��������
 y�wP+H���]��b�*����@/���+Af���w��]���c�VB��4�b���v+!&]v1b���[)��|�����V���� EKS�l?e�|a�(7%q�@��A�j)�^$]��V�AV$]��j)�@�KU@LV��q��%���{% ��X��������v��J2��]w;�n%��K�.FL��v+E��v�_��TnyxY���Vd���[����7+q9��r���#��p-����iGL��Z.+��!?�p���\V�d9B�W+�d���
��I������[	�.
�1i���� si��p�c�VBL�4�b��k�R1��������6i_��Yo�:����e�QunZ�2�eyjF�y[&-��������LZY@����	l����2�h�Z����:.�I�����v-���������k!��YXFp���_1���2BLZ���EL���g��u�j��wI&�Rl����
�I��@L�E������I�^���I/X�&E��E����`-�1Y��b�J'����`����Af���w��]���c�VB��4�b���v+!&]v1b���[)��|��er�}����� ��j���[d�����e &���� ��LZ����1�	l���2�<5���2i�e�\��U;u\8����%��Zp�ga!&-i��B������nI��b���e�����_+��|���`;�Ys;�$�F��'�h�C���'%*K1Y��2/X�&�{YD^: &�`-�AV��p���lR�dYDt�R��*�8.J��v��k��]v1b���[	A�����n�����ti���I;�n��b�����
���'��4��5���
r������e &���� ��LZ����1�	l���2�<5���2i�e�\��U;u\8����%��Zp�ga!&-i��B������nI��b���e�����_+���`i��x�U�z[���Nd�I�����Jmm^�p��p>�Zd�����{8_��I_d��"����j��/��y��|h�^����;���4|
 �a;����0����R2�awC�N)���0DL�vJE��;���G���������L���k������f���64DL����� ��641�C�xkDLzC�A��[#���
M���Cc@LV��q�`+W������[	�.
�1i���� si��p�c�VBL�4�b��k�RT1�cg�n�?�l��t�&�P+�s�(Yw�75q�d�M2�pCR�=��&��G�!�d!p<6��#�����84U5�dUO?�	 &�^2;�n%��4�b��k����a����[	1�����v��Jq���s����i����.�\qt��[���Q���8�b2��&�G�!���cb�#����8���nHj�d���b�������v��k��]v1b���[	A�����n�����ti���I;�n�8b���;���[��9A��-5������G���C &C�xlB�y���!p<6!&=�
I� ���	����FL�����	 &�z����N1i�
@���v+���a#&�X��d.
��v��J�I��]���c�V�#&�xo���p����� U���z�z9��c���!�!p<6!�<�
I
�8�����F�����w�pCR#&C��T��U=}\�p!�rf��%Ow�M7��^{Mn��&�6m���#FHSS��s�'���)��C+�������O���	��bT�vlmm���^���d�M6I57�J�����������*��R�#-��{�8+N����;W����S�V<�����������c��6T�$�������WTt��.���6���^1��O��3�^�>jtE��$�h�"�7o�477�l#�w�������AV\qE����{6������*�F��x�u���aXUE�~����Q��7	d����
�7�|S�?�7u����\�~F����@��i�$<�9s��������p�	r�YgECg@� @ {�]"���?�����Fu�������)@� x%�_��K^����a9�<�j#�����z!@� �@w���Wj�/�����o��n��/~�C&�->XFB� D"������@LV�n�����F���?t��7�xC���j�v�m4�V"|�e�D]]]���d��Vb�D4+��Y��S�������)S�LM����n��[���6�n�9����F�X����b1���c���n)�[�W�����>�u]�VT�r]a�*~��_���g���7{�O�<F5��g�l��7Qq���Q��-��l�h�J��#u�E����Q��������������#e�����"�aU��Xo��;v�0$��S�{6��~�m�����5�X#������*�C�(brHO/On���G>"�����}����.���������y���&L��?�F�w#�ye���>�l &?�����r���
�����UW]�W���{�C����^>P�^�F�{����~X���ek�]E�~�D�d�{{���!���U}�#�����o�F9d��v_��T�����=&����D���*�U���������������������'z�I�ew;�T���#����M���y@`�@L���yK�I�iG���v+���a#&�X��d.
��v��J�I��]���c�V�+&�/X.7?�&tY�nD}�l�a����1nz��%�x>����Dz����4b�3���%�x>
w��K�GL����'����)�	g�I��G���v+���a#&�X��d.
��v��J�I��]���c�V�+&}�%w=�&W�����EK>2�N���87=q	��`<�F�y\"=�K��|1�p���`<���g�%�#&K��t�@LV���3����#��X��������v��J2��]w;�n%��K�.FL��v+����������/n�P��{3�Y+�8i����y�B.#&�@18� 3�\���@18��4�\����Sp7�\�b�N
	��!1�<��J1i7�2;�n%��4�b��k����a����[	1�����v��Jq�����_Z&��������5������+������-C�G1���Af:����"&�@��A��1:����2��< ��!3�<��H1i7�2;�n%��4�b��k����a����[	1�����v��Jq���x�������7;���
5r��F������:���9?FL��9F��p���|"6��I��Ud�Dl��n�9�
b2��C�br��$�cX@L�M;����[	�.
�1i���� si��p�c�VBL�4�b��k�R19�����{���/t)�D��,�m����+b���#&���#�l8�W�{>�c��
��*�|"6�p���_1�O���B19Tf��1,	 &��Af���w��]���c�VB��4�b���v+!&]v1b���[)��|��N���6���� e]��vSG���]=��4�di6>[d>���
��l|� &}�-�AV������[:7b�4Z��b�������v/�k��]v1b���[	A�����n�����ti���I;�n�$br��.�9{�\q�� eM�����:9��1���c)y�$��,��k��+����^����W�%�#�J���w�xK&GL�DCC�@LV�r���b�n�dv��Jpwi���I;�n%�K�.��k�b��a#&�X�����e���������Hwwo�����K�dts�����Q�b�(�'d�-��X��DLzG\���(�'��q����X89 &��$��/����#��X��������v��J2��]w;�n%��K�.FL��v+%�*#�}�C~���m��dO��|n���R���"&]�n��ti��2;�n%��4�b��k����a����[	1�� J�Ci6y.��b�n�dv��Jpwi���I;�n%�K�.��k�b��a#&�X����I����r�MK����ri�r�(�b��g2G�0@L2�8� ��\X��L,� &-(�@�2�8w��5��L834 &��<�,�)����#��X��������v��J2��]w;�n%��K�.FL��v+%����<���cs:ri��Y���IZ��d�I~���'bs� ���_��Dl��6��� �������s~�d>��
��P�I���$����v�k��]v1b���[	A�����n�����ti���I;�n��b����r�C�r���riw��A��}��i���#H19��������:p���1iEz`�@VGp�"=�br ������K��0$����t�k��]v1b���[	A�����n�����ti���I;�n��b���.������������z��v�Yab2%/@L�1:D���+�< F��I#�yedy@��n:�b2�C�br�L%Od8@L��:����[	�.
�1i���� si��p�c�VBL�4�b��k�RR1���[f��.��yI.���Z9��1�����9���yX!��H���<���V��A�
�auw+�� &��h�@L����C�I�IG���v+���a#&�X��d.
��v��J�I��]���c�VJ*&�����7����@��w�kjD���XYkB�����( ��,@brAf�������@L�`.(� +@br�&�� &�pb�@L���iO�I�yG���v+���a#&�X��d.
��v��J�I��]���c�VJ*&5���-VL�_��K��G��������'@L:0C�!l���!b��S
A��0�n�)��t`)��!5�<��F1i7�2;�n%��4�b��k����a����[	1�����v��Ji������Ko�Pf���K}�����fM2�g[W���L,� �,(��{!�3�I��5d�L,����ra
�d!�
���1�<�aJ1i7�2;�n%��4�b��k����a����[	1�����v��Ji���K:���[��G��R���r��-2~4���Aq���0D��vJ���a"&
a;�d�����R�I��"��,1�.���g�s�='�l��l����������+���>(��A���z�g��I�����K��>��� ����V��AL�au� �"=����:BLZ�X19���QbrI[��|j�\~���eO�\/'�;JV]1����I�a� 3������0DL�vJ!��!�
a;���!E1Yd:���7�x��t�M���O����%������7�O=��\~��r�]w�k��&������k�n��&�sL 2����d��%��L�gX6Ymp��6,3b2���6�?�a��F�_b������0:�����:���W���k��.t��5r��cd�J�R�m&s\��d	��2[�}���G��'b��w_5Y	��p���W
1�G��C�b2oFu5���^*^x�����[ON:�$9���9g����~&W\q�L�<Y�N���|���e���A��N;-WW�7W��r�2�d�@C�!�B�xl��G�!��!p<6!�<�
I
�8�����FL����������������_�H�w�^lm��%�w�Yb���b&��1�O��Af�9�
����#&m8�WA���9��
��*��|"����|��g��O�^xA��o?9��#e��7��c�Jkk���1C���/�������-p@�p�
r�9�������?��t�A2n����B ]��ty�eC�����wl�2#&���kC��c��at��!&��
������-
1�W���N9������]��=e�Q��z
�<��R�@19������Bp���1i�z@!�fp7C=�br��d�d�T���n���y����6��z����r���\ ��M�{9rd������\r�%��������.o�q��> &}P-�AV����p�M�x~�dq.��"�|.�����>���M�x~�dq.���%&���K.��D�������vn��7k�q#�9(�
��Dl�d6����=���1b��s~Y>�c��p�����'��P!�������>:X��!?����*�����������}y��G��c����??���< :���^~��_�.��2���M1�6���d���l��O��s#&K���� �I�tn��f��1��n�����l|��%&��v�5���m���.w���������q�F$��b2���1���s~���9FL�p��� �'bsw��U��D8*�y3�����}��'������C�#F=�����[n��|�+�����<��c�^�p����N��k��UW]%��O���&��L�h�|��l|���'�������lA���[:7�K������I�tn�di6>[��m��r��m�����.w��
r�'Zd����s����dp��@6U��pG��=�TELf����	 &�o��V��c����^�?���&��2��+�����2e����Ke�-�0���]t��������Q9�H�b2e�!�d!p<6��#�����8�d����{�M�I�pCR#&C�xlJKL�/����.?�jI�jWW+_9`���Z����k�m���l^�I�gC ����l�#&��
�l�"&��NU��y�w�q�`KV]�x����j�cC�g=��3�U��z�����y���d��w��_��
��w�I��sd9��Mq��!&s(L�)�\1��P��IS��b��
� -1���������K������[K~������#���;���� &�y &��
�l�"&�����{6������;U�@L�1>������n�s�=W�:�(7n\�c�������Dn���>���o{��:���C=���.��2�m����s�t	 &���
AF�_���
������
A��mXf���������6,3b2��������^d��n9�7���t�.��}[d�
����R��@L�P��IS��bp��0
���s��9��Mq��!&s(��d���u�Y������K�����Fm��1c�|�;����SO�SN9%o���g�-^xa���~��|���pi@L�I3<�,���V��"�1��W+�����p���1��lx^�d8_�i�I�>�����X�{u�t��M�c���Y��8���S�����l�
A�ldS1�
w��!�MU�d6����b2��#�<"'�x���?_N>�d9��#d�����_�"��u�����.�H6�d�#�{�99���������y��r��������i@L�M�t>Yi6>[���n�����l|� �|�-�����lAL��[:7b�4�-i��e����>���X&���W��GG���5����}>������f��p��@6U��pGL�=�TELf����	 &����e���^*]]]��j��~`���;v�|��_��N:I���z�v��o�-��������{��W�L�"\p�l��62b����B ]��ty�eC�����wl�2#&���kC��c��at��!&��
������-M1���[�x�M���U4���k��Q�����5�{U�1���!&��
�l�"&�����{6������;U�@La��+��u�]'��_�������n�z�!���(�&M
F����r�1���|��d����o����>���MY$=� ��dj(�&B��E����`-�1Y��2/X�&�{YD^: &�`-�1Y��i���=��>�j����%��'�1a�Z�������|1��@��K�.FL��v+���a#&�X���.
��v��J�I��P"��,1�����F���Xu�Ue���VP�
Q��[�������������e�]w
�dmmm_7~B���7��dHLN��sA�d�2�E�^���b�sA�d�i����/����[N������WL66��)�����k����TE��L�����*b2�2�gC ����l�S�?�d����UW]%����p]w�u��[kjx7�+C#@LF���+�,!����\�a���cG���p��91\�a���cOSL�xI��9�W��E]=���^���n��7n�����&�d	���I[�}���G��'b��w_5�d	��p���W
1�G��C�br��(�gX@L�M7����[	�.
�1i���� si��p�c�VBL�4�b��k�R�b�/���Z,��l������A��d���d����.��'b2�������*b2�2�gC ����l�S�?�d�zOI����g��?���9r�����2u�T�0aB�Q���=��s�k��]v1b���[	A�����n�����ti���I;�n%b����������L�����6�2y�z������L?b����*b2��I�gC ����l�S�?�dc���f�����^���N�3g��?xc��
�'����w�}��M�
���v�dv��Jpwi���I;�n%�K�.��k�b��a#&�X��|���i�?��*K�z�r�x�z9l��p�������L?b����*b2��I�gC ����l�S�?�d��������.3f��Q�F�����fY�x��������<��c�k_���7.o4��%����� �c�V��K�.FL��v+!�\v1��X���.
�1i����CL�zi�\8�C�`i���8�V���E�X��-=�c�d6����{6������;b����*b2�T�O1������u�Y���.��z�����/���\s�5r��W�����g?������y�9��-��o�k��]v1b���[	A�����n�����ti���I;�n%b����r��e�]A���9a��2m����2-�d6��$��!�MU�d6��p��@6U��p����<�'�p�\{��r�q���'�,���N���O?-?�����[n	VM����6dA1iGAf���w��]���c�VB��4�b���v+!&]v1b���[���\�)��K��]�s7��q\���=6k����AL��.��1iM���������;b����*b2�T�O����Is��@IDAT���%e��O�4	&���0 9
Qr]Q>�b�]���uuUD�(.��P�ArQ`�t�f`R��������m��z�������S��z����v��>��U30�	[��a�&��v�\t�Er�i�IKKK��W_}U.��b9�����#�����:�;� ��V[������[n�C9��&Lfoo�,_�<����gKmm���v������vy��'���Nv�m7�����===���/KMM�l��F���%�����5k��'����F�y��}Nb�vuu���+���g��5	�\rgg����+R__/3g���$�p�jy|q����H�������[d�d�OU�����E����w�q����h����U�V%�O�>}��nf�����������I�d���/i,�O`��u�z�jijj�
7���F�,��K�������d��%������l/j�#o��{�-<��\q�r�I'�����W^)g�y���7O������yc�I;�2;��$��i��#&�X��div�p�c�NBL�i��#&�X��b����V��h��w
��7��('��"[��O�O�}����G�����O*b��;��>|R�>�I�O1��Xg�<��#�`��DL��-W]u��|��������>��6�!`J1i�Af�:��4
�}���t�,M�n�v��I��4
�}���tR,1y��r����j]���
r��������	�������I���IEL�pGL����O*b��;��	 &�+&w�uWy����F���v�dv��IpO���GL��N'!��4���n�:���L���GL��N'���?�-?�a���jHLn:�V�8�U���)?a��>�1	w>��I��I���IEL�p'5>�dc�d^V5����A���N'�=M�n1i�:�� K������tb2M�n1i�:�KL�mE�|��5�d���lk���m�#voI�O�}����GL����O*b��;b�>|R�>�I�O1��1���UM1iw{dv��IpO���GL��N'!��4���n�:���L���GL��N'��������*�.�55"��"���"M
�/&�����@L����O*b��;b�>|R�>�I�O1��1���UA@�
���?���w�-��.-<m�����r��g����|�^���� 5��[tp��x����>����|��I�C1{����F��=��;�}t.�������J[[[�8���@��/����3�b��0w�wU���jl�?����_��������2 G�Z#���U�����!�=��W\q}��w�/�����'�Qp�������I]]�������L���������~�����|����rMMM|6�B~|�"&������g�}d��7�{Wd��%r�����)Sd�������O��2o�����	��,\�p�_o�5?��s��.�-j� @��8 p���r��:i����=������������ @��	���b�O���y�pXL��K~�`�9���J��F`���r�
7o}���+V�y��'s����v�m'����
�Mw]vN7��fLf��P�"�}�m<].Dgl��qB���@]�vmR�:uj�>�8��k��:�@�������6�������-�����1���
�Q�+����'O�4����o����kt�����k��}�e�-�3������e�����l��X��1y��}��T�d��aw�n�:�����r�:�i��6J��~D:�L����#Yy#"���p�b�R�������3f���������H&���b2����^*��/������N�m�������@	��j+Y�x��r�-r�!��0�CK%��K%���p��c�]���'�x"�@�_p(�^�������U2���+,��,�]%#���+W&���5��V�-�@�gL�)��T����vY�b�9�����7�*��T���Cy���}��#W�Z�|�9}�t�����p���<c��;�����T�1���������h����d��M0!���IAf�9�{�����4�� &$&��br��^��5k���C���Z+��,���brm�����;2���IEL�pGL����O*b��;��	 &���d�c^V%���mA���N'�=M�n1i�:�� K������tb2M�n1i�:�SL�w����o�<�|oYW+r���r���P?�����L�}����FL����O*b��;b�>|R�>�I�O1��x��<#2/��b��� ��X�����a����c�NB��i�����u:	1��a����c�N�)&���_��jy��^��z��{4�i���-���>71	w>��I��I���IEL�p'5>�dc�d^V5����A���N'�=M�n1i�:�� K������tb2M�n1i�:�SLj�O~�Vn}�[����y;4��l��g7�Oc��#&}n9b�>|R�>��p�!������Nj|��<���< ��j�I��� �c�N�{���>b��u:	A��a�w;��$�d���>b��u:)�������������$v�-����e�9M���p��I�[�����T��w�$�}��"&}���b2�1b2/��b��� ��X�����a����c�NB��i�����u:	1��a����c�N�-&�{�K~��]�_6$&7�Y+o��Y����>�	�������I���IEL�pGL����O*b��;��	 &�#&�����	 &�n���u:	�iv��I;��$Y���>��X���iv��I;����b���z�����{���m5r��f9i�V�I���GL��p�$�}��"&}�#&��C�'1������y����%�\"�w\����lkk�����L��iqd����+}��tfY��{K���,�Y#dYP,��Kg���dK���,�Y#b����������#�z����9f�&������f��I�d_���@L��,�p��b�=��3�bb2����{�������"=��b2�����r�/,X '�tR���R &K�U������;����lb�2~��F��K��qp��_������lb�2~���-&���u���O���7t�o��1�S[-���>7Aw>��I�2���IEL�p'5>�dc�d^V5����A���N'�=M�n1i�:�� K������tb2M�n1i�:�d!&/�y���H��iz����k��n��g��OeB�#&}n7b�>|R�>��p�!������Nj|��<��b��/�#�<2���_��5KZ[[���(�b�heA��	��ap�`���e��p��B�e�{��*���`���e��p���������:e��!1����r�-��6��������w�I���IEL�pGL����O*b��;��	 &��I�b����$����-2;��$��i��#&�X��div�p�c�NBL�i��#&�X��,���Ov��w�3K��r�tF��0�Y��%}*j1�s��p�!�����������T��wR�@L�1FL��eU@L����t��4���v��I�4
�}���N'!&�4���v��Ibr�����vy���$zj[��g��vP[�T&�>b��v#&��C�'1��1	w>��I���'���c������&����=2;��$��i��#&�X��div�p�c�NBL�i��#&�X��,���u}r�
���?�$�
u"�wm�s��$�5���8��I�{�����T��w�$�}��"&}���b2�1b2/��b��� ��X�����a����c�NB��i�����u:	1��a����c�N���}r�����?vI��j���
��A19��6}:f1�s��p�!�����������T��wR�@L�1FL��eU@L����t��4���v��I�4
�}���N'!&�4���v��IbR�~q�:���]��} ��yN����V�rVC�t&�>b��V#&��C�'1��1	w>��I���'���c���_�.]*��~���;7�]^B�� &�����u:	�iv��I;��$Y���>��X���iv��I;��$+1y��r����dE��&ur�Zd�m���3a��>�1	w>��I��I���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���I�JL��T�\yG�<����\7�^+���,G��br������#�I���IEL�pGL����O*b��;��	 &�3&� &��
#�$&��`B����s��I1i�9ALHL
Vb��%=��?t�CO�$�5uR��[��qp��uV[b��� &��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)X���k�����������jj���vl��7YjkL.��B�>�1	w>��I��I���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���I�JL��
��ur��]�?��I�}����������Z�)1�s7�p�!�����������T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s�������^�w��u�t���������^�sL�l1���Z�)1�s7�p�!�����������T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s����,��Mw��ww��VM��rv��u~���M���VSb��n &��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)X����������?���\��
j��y�r��-&�ZM!�I�������T��w�$�}��"&}���b2>c �b2��1�,@bR��	� 1 1) �L0!p���&���d���`)&��[�\yG���dOrmS�jd��Mr��6�k������@L����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR���W����u��w%���P#{o_/~��k������@L����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR�������'���������e�|�-S��~����>71	w>��I��I���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���I�RL�\{o�\y{���|1����N>r�$�x�z��������@L����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR��zA�L�������m:�V�qd���u���VKb��N &��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)X��u��;:��/�&�7cj�����G���VKb��N &��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)X�������;;��?�$�7��F���$o?���z�%1�s'�p�!�����������T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s��������U}r��r��]��55��n���'N�br�������I���IEL�pGL����O*b��;��	 &�3&� &��
#�$&��`B����s��I1i�9ALHL
�b���_���C��������l�I�\p�Ti�|1A6����FL����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR��"7>�!���!���/�M�����1EfM�3��jAL���$�}��"&}�#&��C�'1���������h����d��M0!���IAf�9�{�����4�� &$&k1�u�]�����ter�3�����k�]�j2��jAL���$�}��"&}�#&��C�'1���������h����d��M0!���IAf�9�{�����4�� &$&1��s�r�m���{�k�6�V�|P��G��5WCb��. &��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)x��EK{���:��?�$���\#���$�tX��5WCb��. &��C�'1��1	w>��I���'����xL&tww��C���!���nuuu���$�&M�����V?������������Vikk�������?�����kE������I��q�����[:N�t\ccc2F�iv�����?<N_���&�����Z�7�?|��G_��477'}���|���Iwdo�HV��nEzdbr$�W2+�#s�>���+����9���<�^y���^�����)���3�����eN��w���v�AL���$�}��"&}�#&��C�'1����������n�<��\q�r��7�3�<�����g��y����O���>ZT������{��G.��2Y�p�������l��u�Qr�����;�HF���� _|��u�]�t��D�m��vr�����'�,;����q��n��f��O*��w_2N���;�(o|���N�9s����*!������w����$�N�Fr��������������6�t�rR�-[�L���z���.�=���X�B�O�.{������o��;Lf��a*'��_}��D��g<Z�G������x��hT�����h	������!&�3-�CLvt��o���ojONIl�lf�|���R��n��/5����DL����O*b��;b�>|R�>�I�O1���KP����|E���?�z�n��������~��#���W_-����������v�}w��������^z�|����n������?_?������������+���h��I=�}��7���������O~���Z��^�G?�Qy��_�{k������~7��\1oG{�����-��2��x/����wF���y
w��)��|"6�d6��S��O��5b��s~
b2���k190xi�>�)��]zz�����k�+��*>or"l�I�������T��w�$�}��"&}���b2>�1����'R���o�<P�����~����V|��GE%�UW]������&g�uVr}���'�(w�qG2��]�z���
o�i��.U��<��c����e�Og=��R{���,Z�H=�Py���-{��G���u�]�������v�\t�E�8��d��$���^Jz��}��]v�EV�Z��Wi�|�r���>�HM]�U��>(����'�tR"6��v[�>?�����+�L�k����,�����d��~`��r�9�$���7�I����$R�����5�\������km)�_��TG�� �K�*�c�?brt.�����G������"&c�?brt.��^b�������k�e��'�8��V>v�$y��?^#6���Ik�Cy�I���IEL�pGL����O*b��;��	 &�3S	_������~����bT)����%[u��'�|R���o%�����,m�����&�|S�N�q��'K��{�
�������d�
6H�����O���g�-;��S"��O}F�JK�"T%�
������=��3��2�:�q����/�P��z��<UZ�^�:9G��\����d���J]��_��_E�]%��)S����T����~6Y�V�����>�,��s������D��|��7��������J"To��&��'>��M6�D/=�����8� ��0���)�\b2��tAf�;�
���)�\b2��t�CL�>�|�\vk�<�|or�m�5r��9b����
CL��GL����O*b��;b�>|R�>�I�O1���Jx�[�"�^{m"�����&�PL_����3 u����o.:cP7]�Ug����|�#����T2��������T���~P:::�]"U�A��> 3g����{��7��5U��,��+W��>��di�/}�K������(�y�I]�V%���gG>����������S�e��t�
O��\�.�����+����d��g��������s��j?���$u�A�^ &#��-�l(%�@%19
����(p�A	1iy���(PJ^b���zd�]r��=�U67����7�;�dp���I�{�����T��w�$�}��"&}���b2>�1��P�����7�8X�T?����[��J��by��g��{�[��M�zg�qF 4�.]*?�����*	��������v�������>Z&M�C��/�(���w�eVuY�������T�]��r�!��fg�V	�2���oNfr���eju��^x!���~�����{L>����.��'����In���Dn�I]�v��v><������[�U��=���r���AL��;�7�l$�Wp�"=219���+���9p���b������HV�����U}r��r�]���6���.[���O�bu��9�I��I���IEL�pGL����O*b��;��	 &�3W	�M�>������#�<R������t�����[.�����--#�R	��QgE��$u�W�����T��3)u�V]�5��1�lI�!���^v�e�����]bUg1n��v��0��\���?�M��_�����{��SO=59L�u�M7MI��-[����eYu�W]�V�;y����J@}������q���SN9%yV���	������z�!��'�[p�w=�����-YD��i
�����b2"���FL�N�������~Y���s&��\]M�������������\
��>w1	w>��I��I���IEL�p'5>�d|��&A����C%K���D}���~�Mg�l����.Y�4_��$u��������>���w��<�q��9��h���o���34u��
�#�8"�!����'y:N%�������Y��gK�� �Y���L���w�L�6M���?I[[��1�B���b�\����,�
U���L�.c�/]u���c�9Ft������:K�%o:�T���M�S�!��m�QQ�����ej�:��r����u��~
�sW���{|��%�������.m�fC`��]���o��YL����s��h�=�>�����~?�r��glx�s��w�^�j��|����r�]-��?��kk��y'��������3����A�� �����}�b������^�75
~�����	� D?#��d�3��S��S�C���8\u�{!Bq�����qh�oj�J�q���;c���
*��b�xi�~h�h��D��lG]�U��8����ZTY��v����F���W�JD���|��D�Ug�-:V%e�8�!�'?�I"���/:�QgJ���q��iz��;����gI���H�`�%hUnn��&���J���#�"��K/M�������~&�z��d���O��m�~����T��"U��-g�s��OZ�����?&.,�x� @��&�gW4���)k:�V�i����^"�L���q.&����!@�@u�>}�l��V�uR���'����0�$�\TY�BK��3U�
o�b����m"&�g0�`\�`���-o����+YV5-&�z������	��������G;�0��*&5Oe�.�����?N����g^�}���,F�*u	W�khh>����bRgI�����!&U������b�����=3���]*V��Y���VuV���b����rU���F@�����n:�6�k��n],�K*����4���:/v6v�g01�����~r"����]�_0[�bE2�f��Y>'1S�{r��k��}��C& �K��1tV������j�9���Z���Y�d��0�������y�������q��2�Uv����3g�������#uf��B/+@��-���N'�tq���>_�v��IpO�����t�>�7UW����W�l��%��b����M���y��d����d�P�=��)��v�e�dy�k��&y�d����t�Qbp��r�-�PS��b��G��s�&?����4:Q���BT�i�K�j��{��A�/B��P�*��9�������f<��c�������}�;�����l�O~���35��r���F�gx)�GyD.��B9��3��m_�-^�8�y�!�D����~��|���������Qp���PW����'�H�N����l�za����i����I;��$�1��a��)�^x�W���]n�'���A1y�^�r�����0��L��I���t�&M�n�v��I<c2M�n�gL��N'�=M�n�gL��&��b����J��t�U�)y�����y��Y�*e�7�b:[���/�N8!��Hw:�C�P����?}���{���O]U�u6_z�c���:{���ON��s%>��d���)�E���+����|���������d��>Sg��}�����t���xz���/:��s��\�lK]���s��-��2��9���%K��)���H��|�;�~~���1���A6:��U��&<z���\bWd�	����s�]EL�&<z���\bW=�������;e�C�J��)��i���<Y�����D�� ���p������� ���T��wR�@L�g<&T$��S)��w�i����t�������]t�/|�r��g3*�.]�,q��o|#Y��{��^2
�MozS�������r�1��UB����O2V�+����&�K3n��f��]��'���G��
�/~���1�������l����}����&���o��F��z����'�c>��������d����;/9�G?���32�����?y������$�F����1���=d�s�]�{l���GL��%vA�����>:��U�dl���GL��%v�SL����;��%?�~��5�.r��Z����JKc��������?3&}�#���C�'1��1	w>��I���'����x�%�E:�����~������D��������o~������}�c���
>�$��R�_��W���������������o}K>���$��?c����K��TT��K��l�.� ���j��S���D~���'�$u�W]�UgJ.Z�(�:[Ss?����/���J�����,���O}*y&�JG��9���*H�7]nV��.y�BSgZl�I�C2;��$��i��#&�X��div�p�c�NBL�i��#&�X��<�do��<�l�|���2���d|��|�����j�v�I�d���n1i�:��4
�}���tb2M�n�v��I��4
����x��\�>����m"�����~z���|������g9���*
;�0�<yr�l�~��������\����~��O;�4�3gN�<��w�=9F�[U���_�Rt��.���%U�����eu��@�}��;$������+����~���^{��,�}Uhj?��������?�MMM���X�"���,�7�����~�����k������G)_���e����8�pG���G?*�����Y��t�[l��(�k�d��6E���%z�����K�"�,:�Q�>*��E�dt�� &G���)&�������k���7����>E^�I�4���)����_�� �F�����G
@L��%zA��pK�"b2:b� &��Wk�.e���y��������z���(p*��.�]v�%�����VnR���K�������?>�*(U>�8��O<�D"�>�l�u�]E��>]�����O�������G��2P��{�z���]�J���gR����/�<����g>��d�W��:�Q��.{����J����:����\�`Ar�*W���w&��T1�"Tgk�7�'�xb��f�m&���
����N�����/���>ZLn1b�s� �c�N�{���>b��u:	A��a�w;��$�d���>b��u:�[L>��W.�~�<�bo���{\��c��~�$b2w�Mwd��sap��0�AL����!�r(Lw�n�;����`g�@L��Z�����eI_z����t�T�aox�����Y�O>���LP��[��ZA:�r���N�B=��#��$��?HfY.[�,���fpI!�*�����<�����\t�E���*#5/=���1�:;RgMo*4u�Z]zV�����qz�:N�����+s��&�<��|�;�I��8���8�u�Y:kt��7�������M��d�`a�wK���BL��������?����{�IK���BL�������\�J����r�c���>q�fy�-��\�������E�����O*b��;��>|R�>�I�O1���J��~�|Fv��|1������^z��r�-��*u����:J�8��d6�h}o�����~&w�y���T������q��,����;�6L���Z��O~"��s��R�:kQ���'���������~�K����z(Y2v��i����>9G������KfU��J����?�Q��]+��OO��}�;��,����b�1���� �����H��AL��a�
AfEzd�G��z���"=219���+o1�rp	���+o��]�^�5����$S��9(�dB1�	�����dd�@Lf���&����e2��`,�	b�dd#�c�FY���6�l:�Q�dz��:�P��Y��3u���F�Y��m������8��_�q�7<�qx��k����y��4c8O{�oz^:N�m��^�h���d�1�%�����1�q����������n��w�{����������o�k-��sf�;�>�1��1���[L�w��]Ov���]����Z��3������|�;p�0c���!���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)x�������=r�%kr��0�#���Se�
�!&WW;�I�������T��w�$�}��"&}���b2>c �b2��1�,@bR��	� 1 1) �L0!p���&���d����-&u����{��/]#k�r��ogN��7k����i&��[m���4���{��b�w.1�Ca�wS��0�d;��br��P.gb@L��o��t��4���v��I�4
�}���N'!&�4���v��I�bR�e��^���������N������;6Iks���Acx1�s�dp�!������� ���T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s�����AL���O.�y���xO��O��I��o�Lk���DL�n��b�w.�9�;�IS��0�d���Mq���9��3��qvC���E1iw�dv��IpO���GL��N'!��4���n�:���L���GL��N'U��\��/���!W���;���o���h�YS�9(�TLAV1����,lBLV������U<�#,�b�,l�c�&q�x-���"�}A�=�b:��J�����i1d�P���g������b(eb2{��t�1���/�<�-��z]����U'�$�d��\m<�0c��n"���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T�����EKz�_~�:w�-M5r�YSd��z������b��V"&��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T��y��>���VI{����o�9c���E�4��?3�����"&my��}�����I[��i��a�����pbr��7���vG��	E1iw�dv��IpO���GL��N'!��4���n�:���L���GL��N'U����Y��O��k���}��;��V9p�&��R��������D�����O*b��;��>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR�1���_.�q������u��o��w���R��������DL����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR�1���/���!W�����}�6�Y���&��s���������I���IEL�pGL����O*b��;��	 &�3&� &��
#�$&��`B����s��I1i�9ALHL
�"&�z���t���^����7����&sf7�j�e1�s'�p�!�����������T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s�����EL��
��/����:w��Zj��7O����KMMM�>v�>w1	w>��I��I���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���I�Z�������~y��_�����>��I��6��P��f���@L�����p��^�c����d$b�z���{��*����c��b������e�6�,C�%��{	�2<1�!�Z!�J����p�f	��%���P�d�0KhU-bRO���_>������>QQ��;�l��wj��-�C�q�������2���IEL�pG�����O*b��;��	 &�3&� &��
#�$&��`B����s��I1i�9ALHL
�$&;��������������?~^��w���Zg��*1iEzdbr$�Wp�"=219���+����9p���b��49������@���,�
AVP���	l�����"�� ��@[��m�d$��"&��v5����%\���]���Sz��.x��9��V�rV}$>m�>�dp�!������� ���T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s�����IL��
�����]�N�{��r�f�:9��6��Y�	�����9���<�^�������HV��V�G��}$�W�I+��X@LZ'@Lf�@+Y@���{$��"&��6�,�m�^P�����h��,(���$&����������]�U��m�r��m����H|�"&}�#���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T����������WeM������A19I���(
u5&L,B����d���w�ab2dbQALZP3�2�� &-(��A1�A�LdD1��"� �����G�ZDK�d�"� ����p/R�C���1Y��T����O��+���~��z���Z��]�dr���'b��F"���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T������j�<�T�t���<f�&9n��h���C����I�[�����T��w�$�}��"&}���b2>c �b2��1�,@bR��	� 1 1) �L0!p���&���d���P�b��������%�]Cbr��
��Zd��L�X� &-(�����E����d�������f�=dbQALZP&��b��:���b2#�E�A�)�!p������" E8Aj-�^�� &#@-�%b�H�F1y��]������!1���ur��V�y��|Z"&}�#���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T��|zI�|��ke����Ln8�V�yT���}�	����012�����r����XT�����L,*�I�dx@LzP'@Lf��6�" E8���1Y�� �"@-�a�
�@IDAT%�����d�E�DL)�!�(&����'�J��:$&�-y���2�f����@��%b���&"���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T�������*���'�CnR�:���Q{4I[s�	��!����G����K�*�c�?brt.������G������"&c����yr!��d�l� +T���=c�E�CL	*��d-�����a�����1Y$���V1��k���z��g�9�G��$���"m08}rl�I��� ���T��w�}��"&}���b2>c �b2��1�,@bR��	� 1 1) �L0!p���&���d���P�b���k�wv���!1���9y�y�&
&\b� &c�?brt.��p�Mx��������"&c�?�G�����M��^�^���@�@,���HP����1Y$��C�e��vp/T��!&3Zd;�d��2>�Z����t�/n��W���������5�s�2&��1��Aw>��I�2���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���I�Z��/����Y+�^�3������|���&_�41�sc���1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T��|em���j���Cb���F�vX��g����������x_�9��5�D}�Q��fs��k���b2*��l��D�
�dT�4w$��t�O4*%����`��d����H�gI��^���Yey$�,K����{���<1�%��{!&�g����*&���_/Y-O��W�����:���	�Z���6K.��.�Aw>��I�2���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���I�Z��^�7�^#<�#��	���h���m��6�3a31��k�FL�6����=&�����|m61�AL��������lb����I��������@��,a8��X
�a��
1Y�E�e��Vp/V��"&3�YB+�d	�2<��������?�-��
M��{�9y��n��	��BL�pG�����O*b��;��>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR�f1y�#�r�����!1��������e��5������I��{#&_�M�w���k�FL�6��� &c�}��pm61�AL��KoO�IO�dC�B��
�0AV��{�0Kh��,V��"�2�YB+��+�C��,�b�XZ�b��������������i�r���r��-�i����� ���T��w�}��"&}���b2>c �b2��1�,@bR��	� 1 1) �L0!p���&���d���P�br��>��������%,�k�M���3Y[c�'Zb2��6FL�O�7�
�z#&��'����hh������M�d4�4v&��t��C���J��6AV����{V$K���,�WVG#��"YZ���+���Y�,�b�4^Y]�b��w@���������?0t�'��,��"-��Y!p���t�.2���IEL�pG�����O*b��;��	 &�3&X�t��p�
A�����b�
9���d���#��n��d��vQ�E����E?D�m��)RS3���|�#�n�;���-��omm�l���:;q	������k���S��
�{��s(LwT���7�����f��fO�0���0O����g�l�/@���W'O�lZB��7v��O�KW���__''�� 3����w���e����Q6�d��ph%���������I�&U���%�{	�2<T�wW9���,m�Q��i�>��V���~�����Cy/Cp�f	����?�7u��%���P���~?��,	 &��I/D"�p�B�?~I��9����J��� @���"��k��'�du���|��}r���2g���PN,\- @�@�@KK�L�6-Ua�@LV���N������A��w�-�K���k����/g�}v0�ByD�]���fL����Qp/Y&t��2�5��{&H�j��z���B��Ap�c�M����d��{����+��I��{�l�%�������������Y����m9�_���Fv�3�gL���������8��]����w[vip�c�N��t���nmmM��~D|�G����p_��o���:+^�����[SS�
y�����q~����M`�������-��"�r���X���Y�>7�>�UJ>����,	mwx���t��4��y���t�~��r�����Y�f��b?"�j~��^�w�%7��3K�
�6���3y�-��o�3&�3-A��\�jU����O�j�=�"Z���" E8�gLF�ZDK�)�!<c2TZV�dU�N�@L����Q�r�U>��3,�b�j��A�U���p/�Z�c��3,�b�j���v1���>��������mi����5�i�
�z����: &}�#���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)T�����__�Zxr��
��=����Ic��5��I�/� 1 1)��s�����&���HL
�I��8@L:@'Y@LfE�pYaF1��{��{"&3�q�,��=�^�Q�#�1����,�(��.&������r�����=� ��9��6�5�.���I�A�,@bR��	� 1 1) �L0!p���&�	q ��t�N$�"����d�>���b�T�DLf�Y��{��0�G &cP-�1Y�Q�#������v����� ]�� �yN������YC$&=�&��Y���w�Ab2@bR@��`B� 1) &M0�@1��HdE1���}d��8�1����,�(��T��{aF1�@L��Z�'b�0�G�1y�#r�=����!19g�:9i��nS$&=�&��Y���w�Ab2@bR@��`B� 1) &M0�@1��HdE1���}d��8�1����,�(��T��{aF1�@L��Z�'b�0�G�1������[;��89����V���y���HLz"&M0!��I�&���d���� 3���=@bR@L�`&��b�:���b2+��� �
3�q�cP-�1Y�Q�#d1��	���b���A�pO�daF1�b��+z���k���$��k�����m����b���!���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�1���/��~��������y�����c&IC���1�!&}nb�>|R�>��p�!������Nj|����I�@4��hh����I�&���d���� 3���=@bR@L�`B���X��"?��Z���n��|1���]��sT���Rg�)��d�D����,�S�G�=k���CL�)���Y-������Q������Z &��Np(�b�heA��	��ap�`���e��p��B�e�{��*���`���e��p�X�z�����������+�q�z9s~�l�iC�|�#&}�#���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�1���N���Ny~Y_�e��ur�-r�M&��ALfM��~���8e}��&Z\?�dq��>
1�5�����8NY����(���b�Z���2 &��V�Y��*�
�91Y&�
�!�*X�p��	��a��
�91Y&�
��1��s�r������C���9�V���YN��R!���I�2���IEL�pG�����O*b��;��	 &�3&� &��
#�$&��`B����s��I1i�9ALHL
cEL��r�\��]�������R#��(g1��S�!�����1Y����{�D����,�S�G!&�&Z\?��)���Y�_�@LV���< P�d��� +\���^!�2�#&�W�0Y���2�U81Y!�2�#&�W���"&�v���nj���J���Vd����������B
�����5Aw>��I�2���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���Ia�����1�N~so�t���v��^>t�$�`R�	�,C�Y�,�b�xVY	�,i�1Y<�,�DLfI��^p/�U�G"&��I�j"�������@�D���Up8��x�{�*���^Cd��`(�+�W�P�d�*���^C����K������NY��?��m7��w�&�m�P���I�2���IEL�pG�����O*b��;��	 &�3&� &��
#�$&��`B����s��I1i�9ALHL
cIL���.���Y�R_�f������Z���LXe����f�������H�gI��^���Yey$b2K����{���<1�%MzU�d5�
�%@L����d��`(�+�W�P�d�*� �^C�^�
�"&+�W�P�d�*:�������Wwt����$W<cj��W���ok|�"&}�#���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�%1����r��r���	���9��M���j3a�eb2K���BL�*�#��%��{!&�g�����,i������H�d�4�UM��t78�H1Y"�
G�U���p�^C���`(��x�{�*���^C���`�X������nk���J���Vd�m���M����P��w�}��"&}�#���C�'1���������h����d��M0!���IAf�9�{�����4�� &$&��$&����;����;�o�1���f���7O�)���rm�I�������T��w�$�}��"&}���b2>c �b2��1�,@bR��	� 1 1) �L0!p���&���d���0���� ���+�3��������������7���*1���� &K����p��di}�����h�dV$K���xeu4b2+���6��j�#�J ��,V��"�*X�p��	��a��
�9AV&�
���B�eGL�	��a��
�9|,�I��;��%���]�[:$&7��V�zH���CS�|�!&}�#���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�51���=���ydQO�g���r�^Mr���&��
ALfE��>���xeu4��"YZ�di��:1������4^Y����$}��b����� &K�U���
�9�e��pb�B�eG��	��ap�`���e��pb�B�ekb�������������6���l��;�L>��>�dp�!������� ���T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s�������\��_���C���3�S_'������gL�b�� &��Xj�d���9��p,�b�Tb�����c�]�^*�l�GLf��.�G1Y}��3�@��E���@Y��j���U<1Y1�� ���V� �W�������U<1Y1���51��7 ���S~��]���.y���r���J[SmY<!&=�� ���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�51�Pn�c�\rs���I�6��V>v�d�zv}�z,�b��.!&��C�'1��1	w>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�E1y�S]r������)�����;�h���6�0�"1���{ &Kg���gA������e11���{��tfY�@LfA��H1Y�w�s�@��E���0Y�h�2�e01��2Z ������g����2�e01��2Z�E1��=r�������'���	�����[� �31��Aw>��I�2���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���Ia,��^��k�����J�4��~;4����d�,��dK���,�Y#����{ &Kg���dK����e11�EzT#�d5��	E@L	*��d@,�������d�h� +ZC���2Z &�����d�h1��+�����;���;�+���n�z��3�JMM� &�F"���C�'1��Aw>��I���'�����D#����6h� ���n�9ALHL
2�A�$&��	� 1 1)�E1��; ��S���v�4k�Z��wO����a&�&_�Ab2@bR��	� 1 1) &M0!p���&�	q ��t�N$�"����d�>���b�T�DLf�Y��{��0�G &cP-�1Y�Q�#���Tw<�%]�N�v��i�j��3'�f3�c`��'b2s�E5D��)����9��"&����A�����Ea�� �d�HiX%�Ur#8
�C1Y��� ���V�(�WJ�������U:
AV)�����<n��BLVJ�������U:j��������oj����%&���{�k�y�5U��d<b�s� ���n�9ALHL
2�A�$&��	fB &�	�� &�"Y���0�G�=��=���8A�j��p/�(���T�DLf���*&��[�\~[�<�tO����FN:�YN��5��{"&3GZTCYQ�2?��#-�!b�(L�� �iQ
�^��BLf���UB1Y%7���@9��P+o��<n���{����,�[��d�,o<���V�(�d����,�[��������^���N���]	����o�9����"1��4�� �$&��`B����s��I1i���I�DB +���H�� +�(�p�A�pO�daF1�@���Z�'�3�qb2��=���8b���W������_���`���v�z�������yO�d�H�j� +
S��=s�E5DL�)��d�#-�!�����A������J &��Fp(�b�j��A�����Qp��`y���q�t��R����{y�*����`y���q�t�X�]=r��:�����l0�V���H��������r1�s[dp�!������� ���T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s���������u�_�N�;V-�����;���iuR[[�f1i��� &$&��`B��b�s��I1i���I�DB +���H�� +�(�p�A�pO�daF1�@���Z�'�3�qb2��=���8b��Ie���=r�
k����	}���On���4J}b2���X�� ���p������� ���T��wR�@L�gL�@LFC4F�HL
p7�� &$&�	� ��b�s�������|�����y����UC}���
�r��-�8�_�3&}���>|R�>��p�!������Nj|����I�@4��hh����I�&���d���� 3���=@bR@L�`B���X�K_��k����>����|���;5����$:{��7����AL����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR�b���}r�#]��I�U3�"_�i�|�����8h)�xCL���$�}��"&}�#&��C�'1���������h����d��M0!���IAf�9�{�����4�� &$&��,&;�������W�����V#�z�4��\3(*�w�$b2w�Lw���sap��0�AL����!&s(Lw�n�;����`g�@L����L,�I��� �c�N�{���>b��u:	A��a�w;��$�d���>b��u:i,��������/�r�t��������*���I]-br�	@��|%���;b��;��>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR�bR=��G�58cr����O�e���U�4�#&sP�I �|����1��1	w>��I���'�����TL@?�X�ti����������_�B��w��O�4I�M�6����	�����+�3f���e�����	w�{��<���RWW';����IL�T����J����=�fC�6��S��g�}Vd�����������-kkke����Rh�O���[V�Z%�������]��_\�'?��S}�7w�g�"��� ���+&W�^-�?��477���n�;wv���#��O��w~��:��iv��o��/�(mmm���[�O����Y�v�466���S'8
�����t��e�D��S7�l��[f�������,	 &��I/D"�p�B�?~I��9����J��� @��V>^�w���������O��W��5�J�@� �C---���8���������C���" q @� �9�5�"w?Y#�������F�����2�%Wb� @`@L���Z�������)@�]fN����v�ey����k�]�5����l[6���D�����3Y� ���� �(�-��_��\w�y�(4
	����dtMM���5+<�Jp���`S��F����Wv�q���s@6tIQ]2Z�b��g�l��=u�?]�u,.���#���n���u9`�&����i���R��z����d�~�����[}G���etu)�
7�0zC�����r��d�h}�KF��}��.����,.;�wC��(}������n���w�v�3
��
Y@LfI�^0&��V[������[n�C9�8}b�����/O.z����I��w#�y1��O<����v�-�]^�"��~�_��o�7�h�X1��#�< F/���'�|2�����d�!�>C�_�����~S!�br,
���Y��W>���2���d����v��|F���V�U*�-Z��I~���]��T)��x2E��l���-�b��������I~�Xj���*�_�P1�/@T���p/�T����o�%K�$�����l/���Nr�b���#��X�����a����c�NB��i�����u:	1��a����c�N�br`@�����_������L^�'N�$��i���d�~O�}��W�}�#&}�#���C�'1���������h����d��M0!���IAf�9�{�����4�� &$&��.&�K����~�N{vp]��oo;�E��Y&�T�r����S�"�ly��}�����I[��i��a�����pbr��7���vG��	E1iw�dv��IpO���GL��N'!��4���n�:���L���GL��N'�1�rm�\~{��������G��v`�l8�.W������@�����O*b��;��>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bRbrmG���H�\|S{��N[7���m����9(�b����>��>��p�!������Nj|����I�@4��hh����I�&���d���� 3���=@bR@L�`B���x�]=������������Z+�=}�l>�>W��fL��
�}��"&}�#&��C�'1���������h����d��M0!���IAf�9�{�����4�� &$&�� &������������!l
�%���v�z���1aYJb�Z�����e)��^
���ELf���N��Rhew,��cYJ'�d)�8v,@L�����B �b2H����p������-�dD��i� [��o�="���FL�N�������x������>��OV��57�����2I���Q�����Po!�|n7�}�#&}�#���C�'1���������h����d��M0!���IAf�9�{�����4�� &$&�� &�+k���W��?-��q;s~��k�Lm����e��>wAw>��I��I���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���Ia���5�r�-�����r���IN��EfO\���6���
AL����O*b��;b�>|R�>�I�O1�1	�F1
m�A 1)��s����d&���HL
�I�Ab2@bR/b���_~;(%/��=�m�9�r�m����\�Zv�>w1	w>��I��I���IEL�p'5>�d|�$@ �d4�AcY���w�Ab2@bR@��`B� 1) &M0!���Ia�����ytq�|���9noX+:i�l�q�T�S&���d���4���{��b�w.1�Ca�wS��0�d;��br��P.gb@L��o��t��4���v��I�4
�}���N'!&�4���v��I�EL���K������J�����F>}�$y�
R[S]j1��*��G���N'�=M�n1i�:�� K������tb2M���D19��&�2� &�n9���u:	�iv��I;��$Y���>��X���iv��I;����"&���;����]%k�79�}`p�������N����ggg�v�-�M��-7�����l0��`��ZIH$��p�)�@�B ��
��b��lc���l�K��:���������y�f���vf����w�93���~���+���%&����,��O��p����;�gC ����pgV}������PL���� � 1� w��$�$&d&�#I�=����b�s$	�d�IG'����Y��������_5��u�����d�P��g�$��LJ*�yd��L����Jw�d�<�F��LJ*�y��.���(&����v#@1�nO�����&�2�����n�Ie�5�S����M���k����F��bRp���$&'�f�����:!�B�?��>���~9di��l�)&��NAF���&+�d6�)��=�d����;�����g�$�F�bR
m$0Y�I��`�$��� 1�� 3�IB�$&�&�#I(&#HL::ILNN��U��/_3.S�����{���1+{Lx&MB1��T��(&���4�'%��<��ty&�F1��T���=]�I�QL&%�y�F�b����/	(&�M
2e�5��{
0�����k�� �F�����O1Y�r7��2��;ILNf��M��_TO�:lyN^y�����b������� ��q�{6�)&��NAF���&+�d6��U���>cf 5�jh#�)�"HL:��s$	�d�I�	�Hr� 1���4�IB1Ab��IbrfvV�������.�y���{����Z �;�O��L�&J���D�R�DA�:�D�=��'QL��4Q@��D�R�D��#M�b2&NjC�m����I�D�b�DB���L�q��^��~��>�j(��Q��#w}��2PLV���G1���Z�N��NLN�����v�6'(K�=}P�]��%e�/�W��l��gC ����p� #�ld��b2���O�bR�13���I5���d$&�n�9��b2������s$	�G��tPL�`�$��� 1��$1Y����%w?4-�B���O�������C��)��RLf�(&�=�d����;�$�gC ����pgV}������PL���� � 1� w��$�$&d&�#I�=����b�s$	�d�IG'������\{���s&/\�'�<�__�7a�$	�dJ����L�i�����R�s(&�g�$"�dJ��!���&�H1����#��v|j|�$��������0��4���v��Ld!
�6���3QL�4���v��L�(&�u����������9���#�;o@N8�'����)&��OAF���&+�d6�)��=�d����;�����g�$�F�bR
m$0Y�I��`�$��� 1�� 3�IB�$&�&�#I(&#HL::QL��7�����={�b������O�3��5a�$	�dJ����L�i�����R�s(&�g�$"�dJ��!���&�H1����#��v|j|�$��������0��4���v��Ld!
�6���3QL�4���v��L�(&�6-o���12�?��@�\��r�I}��~������� #�ld��b2�d��
�l�RLf��Y�	PL�3fP#@1��6��,�����M0G�PLF��tP��`�$!���I��$�$&�(&'�f�u��S6o/�I�|����������f�b���;��b2�����M0G�PLF��tPL�`�$!���I�L����3%	�E�b2-���P��g�1��5���I1Y���
2
��c�{}F3(&5���I1Y����N���7_�%w=0-��"�g��/�<�_�uk`l8&�d��RY@A�
����{��RY@1�
���P�5�,���
���PL6�����d�<(�M�F�b��>
2����{=B:��:\�E� �GHg��u���J1Y���8���zQ;UL��wG���'el�x����z��g��������SL�`�$� � 1� w��$�$&d&�#I�=����b�3�d@�b2�LIi��L�d�8d�i� w
��cRL�g�1��L�j���^����I
��cRL�g�1�S��^�W�}���-������s���W�h`l8&�d��RY@A�
����{��RY@1�
���P�5�,���
���PL6�����d�<(�M�F�b��>
2����{=B:��:\�E� �GHg��u���J1Y���8���zQ;UL�x�������m���L�Z����?(g�W��8��	�H
��r7�IB1Ab�AAf�9���#HL:(&M03I(&3���$����H��CAV���r��Z?&�d}F3(�4���I��i�����Z?&�d}F3:UL��eZ���=���������< O>�_c�1)&F��
�T06��F����T06���ad�, �T06�b�ad\�&(&��A�m�@5�����Q��p���������Z/*Y=B:�����^T��z�t�)&u�����brbjV���]r�c���K��.�K�0 ��zT��)&�W�@AV��~��3���b��>
2}��2�{5*�}����!��pgVH��d*� K�)�I��:�D)&aJ}Y�H$�D�R�D1�:�D)&aJ}R���Yw�����[n�8%SE7)���/��5 K�r�sl4 �d����OA��F��{����O1��F�P�5J,�����F�PL6J�����d�<)�O�B�b�
�.
2%�u��{@J��J`��� �Hi�����	K1Y��0���:a;UL�c��Q���	w��]���+�����"�����d6�)��=�d����;�gC ����pgV}������PL���� � 1� w��$�$&d&�#I�=����b�s$	�d�IG'��o��W���	���x���G������S��5a��b2���������GGo�bR�m\d��8:zc���6.2�d��3��v~z|���������0��4���v��Ld!
�6���3QL�4���v��L�,&��kB���������\��[�s���sR_� �6�d&������!�MV��l�S��{6��J1�
wf�'@1���H@����H`
��r7�IB1Ab�AAf�9���#HL:(&M0G�PLF��tt�����������G��L.Z�%����%�0a��b2���������GGo�bR�m\d��8:zc���6.2�d��3��v~z|���������0��4���v��Ld!
�6���3QL�4���v��L�,&G�f����G�~`��|�����/�9gP��]!�6��9r������!�MV��l�S��{6��J1�
wf�'@1���#2<��r�5�H�P�����5?������[n�
6��]���e�����/'�|�,_���Z����~%����U�\��=��d��5�t����6m�$7�t�`������y9�����\�hQd~�u���/������C9DN=�T9��cd���uccc�s�|����#��-j�����k���G��D*vPL*��MAV�����@W����btKAf�"
�W1���4]��b���m'���Y�������{�d�X4)?�O���&-p�2��b2����
�l�RLf��b���!�MV��l�3�>�I}�m�a�����o~S����NV�\�e�u����W��U����/w�}�`]WW�t�A^J>��O��.�L�:����w�y�������[�����b�
/
�������^*�V�����>��O�O�S��q����[zzz�`�(|�3�!]t��/-� ?����u�]'>����Gq�<�q��g?����'=I TKb�x����/~Q~����C=��&&��Yg�%����	Ox�,\���L��bR��d�Q�6����d��Q�6(�Lq�OF��Q�6(&Mq�OF1��i���$@~�{#���&ed�YJw�������yP��g���l�SL�{6��J1�
w�Ir��@6Y)&�����(&��u�m���~���'>!W_}����U�$~�����O>�����JT:�qvv��������?��?������"cX��7�I��_����t�I�R������y�k������(���|�3~U�����Az�=����_�z�����nff�WJ��_��|��_H=TqB$���������-oy�\x��������+�������U��U���z���o��}�$���E1iA������u���Cvm�I;�a&
���]���X��(&Cvm�I;�a�N���aL���q��k���W�������W�������}B�Ir��@6Y)&��N1I���&+�d6��U���>������*��?��|�s��k����Zb2���}�tx����=_��-SQ�������"R��B>B "&����/��=�yr���
d���_/�������\ ����|�%����kY�n��r������9�y�}��~{UT�E���^�"y�;�����?� Y���5,)*8=�P�?Z����z��J�7�����W��KKlI����7����?��?����=��|����~�������G>�9T�
V��bR�j��d��h���6���)&�s��� �&\=>�W���K1�M�z|���\�{;]L^��|�'c����^��Vt�e��/�����66>�d,�A�I5����=�� �������x��]
ml`��X<lc�m��4�:*!����o{�����+k�Il�����UN9�y����d���2BU�8�����f?��'?�%�%�\"������E-���D~T!bk�w���r���-[������{�^ �����������H|���&��s����@������{	YZ�W�CT�b+W���O?]��_������+^�
�����p�_���/}�KOM�U��b��r1��0��4���v��Ld!
�6���3QL�4���v��L�.&��<%���Q��CE1�d('���/��=b0oSL�#�	)��=�d����;�gC ����pgV}����2�������5�"�!�j-1���*R���|�v�ae����&DL�����g4���+_���d\�dI�L��A@IDAT�;��C>������=y��^�e��-[|5#��DE%�_e����s/�,����x���JJ��g=�Ye�p�jK�Ll	��7�Y.��r�%�P����2+/HK�F�%>����[9E��bRk��dU��w��:��	(&�bQ�� SG\5�W���I1���j���X�;;]L�-���="�l��,{�]r�����tGc�qQ�!RLV���G1���Zr�FE��bR�q��������>�j(&�Qa_'���������)������6D5��^���b��K/���G�O��O~[U��^��o�[�Bn>��O�2?������[���������������Du$��E,�h��B�%�]w�u�:���mh������'d!��E�$��D'����6n������/�E,���tDE$�Ei�jHP�U����~P���gV�V���T�Z5(YU,������j���X�;)��WM@�U��wRL�#���b�*��N��wX���-7���B��IYwz����dx ���V��Zdt�)�t���N�����SL�������~r��[+:�d-2�ow�����?�\�����_<gD�����:Kn��&/����I�(�?�Q���P!:Q�����Y#�7o�k�
,r��r��OZ^���y����������y��Gd��
�j�*��k��2�������D$>��7��Ec�m�'�H���7�7�����Wy����;���,Z��r�@�>����n��Wcb��f.|^Tk&�N;�4����*�����)8o���t����]]������4/^�=��<66&���\.����]��������?gx� w��Y�w5�Q������U9�{�{��;����/_���Q# �!��o�e��E�;���W���o���1g)��������������}<���x���p�	�������{�L�rG��������%���� ��
�xU�%�3�J�~v�_r���������b�{�!����G������gq�gC��Ei��L�f��'&!q�UW]%O~��#X��~���7��q�{�`�U����/w�u��K\�rX��Z!�����l����e�h���:("��C�+��R����x��3'���
�)������?4���+|e$�$*<���/�>�PTZ�h���-^���z/R_��WNIt����Tp^��)y�5�h�`l     �yD�g���������_2&O<f��|bQ�G%   ��#�_���}�H M�i���X���1�������u�"�gT~�������q��Bb�������?���"�0���z����v���W��*K�[���kC�$�$*=!7!� 7�8��^+%(�a��?�y_1	9	Q��'=�I>�u^x���'?��|�3�����������q	�	�	�	�	�@��?: ���H�]�qg����}�.9����+�&   h��d�����jT�!POL�x���
�T1��]�eO�b��/|�����BLz���-���N9����VZB���HT$�,JTL"�Q�^m[M�1��������s*!
�����[>T^������wy���&oy�[��D%��E�d�J��.��W��:�M6sa�PT�&��}+�����g�}v�e��+W�L4��������U���V��=M��c���{������m�y���Vb;(��X�a�,�n�:��3j���>��X����w��V�����.���cWlm��\qn}'^��/�xB��_�o�P�\�6/���7�����{����~+Wn�hE]�����n���nG �L��T�L[����y���K[�V;n��]��,���3���_����?<�7���W���a��"@1�Q�S��������[n�U�����������DE�!�d�?�!#!�p�#~�]��~8�3&��/�R�����3,��K��:�@��"?�B�$���T��?(�^{�?[���V�G�b��W��P�I���W����<��S}���#��Y��������?.���#s4:PFQ�3;Q��K�~p�e��r�Z��^�����y�8;�s����k�f�&�aV�o������-�R6�����>������N�_����<���9���4��5���_p��k������������7�%���+.��l{�",���Y���t�{d��I��xr�cf����3����h��m�g~�t�/��l.:�7���U?��l����:��T[���s���\zs�����r�c���'���/�����O�~�_�7��M^�}��_���Iy�������=y����5\�����}�{�<���T#�d��u?�����+�}D%�;��NAT[BR������E�"�R������g���|I�m��o[^����" ^����a�??��C��<�����rO1���jP
��X�;�]q��U��wR��#�����bQ���TG\5�dU,���ALNf�W���o�p�c�>qM���%dAN�q������Q��3�����Q�����g\-Y5*�}����Z��jT��	(&;�)|�zb�U�z�|�K_�7����<���BQ��������o���AC�[���{�s�#�[0�7\?������u_��3Q���F�C5�3��,�p�m�����.��/��"������������>'_|q��@t���o��I�m\!Cq6�[��V��X���L��0���~���V����OB���L�m\dr���7F1��6.2Y�1r�c�b2���������AL����Q��M2:>�q�=�G^v���,�Gm�bR
ml`
�X<j����660�d,�A
25����=�� ��Z���d��]���������o�?����vZ�G����}�"��B%"�$����W�W���=�����������G}������]�-�G>���x���=����aB���%���o��o�!��+�+*!1^y�������^��s�9^h������~����z����?�S��y��^'V[�QLV>	�{
2=�q��=��������dqt���]�m\d��8:zc�zl�"�1�������|\�Q,�<�����Ir�Q�qx��(&���� ���6H�jhcSL��Q� SC��c��
RL��e��	PLf��%}=1��_���JCT3>��������=��#_���}�"D��)��"�B�o�z�E��G�K.�D=�P?v�]w��?�y�+Dd��'�(������p��&��!��e'�x�`��������x�;�����[�~�����Gy���8�bdd�WWB\^w�u�\����5r�a����mh!T�>PQy��g�3*��]HW�QTi����/~�,_����RL�`�I(��X���=�a����cf� i�����u��b2�a����cf�/b��;'�?��{.�����\vv�\x�@���M1i��,Y�r7C]��b���
���D�^����b�5��4�����I�B�<���d�9��s}���;`d���r���z��JI����^���:TABu�Q~��U�V	d#�_.��[���
o��n��~**!+�?�|A�%����$�%+���?�sy��_.8��������~�\x���b�
�M+���+�$$�����^���C�B>�y��>��L�Wy��7�g�!�}�{�Y����&��b��OBAf�:�D�!
�6���0YH��M�v��L�!
�6���0�|�w=4%_�����a����9y������8���f��Q���0�!w3�e�(&�p��P���.KD�e8�n(&�P3�1�Ic������������'?)7�p�<��#��wuu�����<���W\qEd�������~Tp�#���?�!�����O}�@h�Y�f?>���?��|�C��s��-��@$��JTD^v�e����c���n���^�~�c�����m��(]�x���|�_(�_~�����JgZ���
b�����=��c�gC�'*0�.�I+��e9��p�R���>�I}��2PLV���GA���Zr�FE��bR�q�������1����?g����b���K�=�W���!��B}��(&+���S��p��B��Dl�)&m8Wf� �$bsO�6�+�PLV�}�����'��9P����o���w��f��o�]~����BTB0B���������j�M7�$�\s��y���IT8�\�R����[=��#�-��������JH�����b�U|!w��`��}��������R�9Q
Yy���Kn��F��O~"7n�����\�v�

U.S���T�[�����
���.KD1Y������uY"r/�avC1i��,�d���"&'�f�s?���r���#^F�~L����!Y�����(&����Q���0�!w3�e�(&�p��P���.KD�e8�n(&�P3�1�Ic�LGi��L�f|,
�x>Z���E6>.�d<�Q
2-��q�=���(�������|�F������tT���	�;����Y���>�_N^��%C�^P���')&�#0��9r�����N1�
w
2r��@6Y)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H�����$&���1��
������l{�E]�-g��+g���;�c 'yWD��?�.�I-��q)���h��������|�F)&����%�x>Z��Zd7k�Y?�'�PL����d
Ki:����0�
Ki:YJ C�
Ki:�dJ C1� ����'1���Lx1y���2s�Mz�p���99��9��>Y�$'�r���)J�����CA� ����{J C1� ���S����0�� ���SL��a���9�H��H 9����Z�IA�*����{s�Z]E1�*���S�5���U��*���SL6���U��ln�|�����n���:!�l�����?o��\�UK�=�G.X�'����NX�
J��kZ5����m�)�l8Wf!�J"6��6�+�P�U��'w��Y(&+���SPLv������(&�;��0��4���v��Ld!
�6���3QL�4���v��L�IL�>����y�����r�����<�~P��{r����W^�M1�i�6Y6����N1�
w
2r��@6Y)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H�����(&gfg���r�����M�5�������qw_ya�|w�,vgO�vT�����<�Gp6e++&[���Z
�������[���Z�������b�z��%������b�z\;�	PL�����FuPL���0Y�0E�
�Jq*�d�0EA����{�0E1���RL���P�QL���:A9]�;9+������'�V�[w�D�x����w��@��>�[��*(�<�W����M\�M@Ka	Y
�A�M@Ka	�d
�AA����{
�A1�4.i�m���&I�:���\4z)�4���I��i�����Z?&Y}F3�]�j����i�����Z?�|�%:�O
�(G�fe�����qJ��sR�y� ���*J���.��kN�pr��z����R�D���0�>��,u���{"L�O��Li��d�0�>��SG�( �d"L���(&����-�@��d���+�>�j���>�I}��2P�U���G����e���FE��bR�q���������Gf�6����Ey��i�����Zqu��\�d��.9��9��^9���t���q�d�1
2=�q��=��������dqt���]�m\d��8:kg�������=�I�o
2;�a&ri��)&�X��(�Bvmr�cf��i��)&�X��(&C��q��kA�^���O���M�C[2��
/H�!���A��d��nY{t��zd�o��s���E1Y��~�>�j���>�I}��2P�U���G����e���F�}�@�b��"?��%@1i��)��X���=�a����cf� i�����u��b2�a����cf��iToOfe�;���m�w���~����^G�K5����t���99|yNN<��	�Y����Oy`��dH��MAf�:�D�!
�6���0YH��M�v��L�!
�;��d'=M~�yG�b���S���3�{H��M1i�:�DA��k���0�dH��M1i�:�D1��o�8�{��<�uZ6<R����{.��]�m^s9���|�1���IG�e�A����
��b2���(������Gk�bR�l|\
�x>Z���E6>.�d<��/���}v|�$ �v�dv��L���kSL��3Q��4���n�:�D1��kSL��3QL�4����������t_�z��m������%�99�m�z�����Q�%7�G6l�Wd��5�sfK(�Z���bro]K)&[���b
�������[���b����q�'@19��	�������Y�<�F#�����G1�.���(���Jw���3i4������G1�.���(&���>o�m���m����)��A���cypKA�&����u��j����e���t�?$�.��SN>�zp��N��,u���{"L�O��Li��d�0�>��SG�( �d"L���(&����-�@��d���+�>�j���>�I}��2P�U���G����e���FE��bR�q����4�7;;+�����?y��)��hAvgR��VQ��E/(���F��CD�p��r�����v5��+"@A���&�{j(
D1���&S�����@����&SL�������9�@�vH����jm.Yk��]M���km�dk��]MA�,����{k��]M1�,���QL����������n�m�z��)�y������l�^�{fer���r��9�%��#k���n���\�awe.GIY�p�#d��ke%��B������ke%Y+��_K���ke%�d+��v.����O�������(�a
�a6�����T��a6���X)N%�a6�b�X)N��Lf�(&����������M���d��l�m^�s"��#O8>��z���s�hAN�NPv�Q6A��
��\�{�]�p�����h�R�i����s�����&��Y����<��@
(&S��0YBP)O#���&G1�T��(�R�0�'��4����&G1�T��(&SZ#��1w��Sr��r����5:+����R����%9y�	=r����rq�,�IO^$GCY�n�n
�����I�i�L�b29�4gR��I3y,rO�*���i�d��D�br.=
�h��d��Z�NA����{�ZXJ1���R���������RL�����-�ka)�d��X��\�:-?�e���~TF&zd���8�����=&/O\�'G�m^������V�J~KA��U�3�=M��cQL&g��L
�4i&�E��Y�9�b2M��5�PL�����B
��lX�)�Z���Rro^K)&[���R
������[���R������b�x-,��l^Kw��)7��Q~�uH���\�2��lUAY��5/O:�W��+K�r��n
���Y��RY@��`l8�d��RY@A�
����{��RY@1�
F��(&��C�["��(&��j}Y���@��Pk}
�d���@A�����{���@1����PL������Pk}���;��{����9�����M���_N����P������'��y����������(��bQ�$wu�UPLV���IA���jr��E��bR1dD�b2#�LKi��L�b�d�8�=���&�,�d2Ni�� K�h�x���S��(&�&�,�d2Ni���L�h�x��<������r�vB����r���r������x]�HJTK�s'O<�[.8�ON[�'y���>
���4f����1)&�3��AA�A�~Lr��Hc��U��(&��S�{ �&	PL6	��edM@Ka	�����M@Ka	Y
�A�M@Ka	�d
�A1���PL�����\�f���n;���Y�1:#��wJ���	y����)+��|��s(]��s����(�uI�%��(��bQ�$wu�UPLV���IA���jr��E��bR1dD�b2#�LKi��L�b�d�8�=���&�,�d2Ni�� K�h�x���S��(&�&�,�d2Ni���L�h�x��di���������{g��������d���22��n����;{R�q�9AyR��4/=��%��W
�	�Wr��]�F1Y"a�JAf�����K$l_)&my3��I;��D���Li��d5����*���)&k�Q� S�[38��D�:@1���fp���hT(&U��^OL�b+����12#n-�-�����G���_+.J.t[�.��������������~��ZBEAV"a�J���K�(&K$l_)�ly���{���+��-of�#@1i���H u��#����&�rW�[38�dM4�d�xk'��hT(&U��N1Y����*������0������	���9��yhZn�oZ6l��gS�����esr��n9������W�wKn�;J
����{r��\��b����=�
��,�^I���b��3�����g��$����P�
DAV��rW�Z7(�d]D*(�T��
J�u�L��T�Z7(�d]D*(&U��
���,�9��������e���}�����i�;�����K�/��#�vU�=r���G,�����Y6O����N1�
w
2r��@6Y)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H����I��$���R�������<�� qU�O��d�������*%�+(�>�[N<</G���aw6�|�(��y���
w��l�SL�{6��J1�
wf�'@1���H@����H`
��r7�IB1Ab�AAf�9���#HL:(&M0G�PLF��tPL�`�$ICL��BBff����������������3��_+���.Y��x=������<fe^V,������d�<Vr��;�d6�)&�=�d����;�����g�$�F�bR
m$0Y�I��`�$��� 1�� 3�IB�$&�&�#I(&#HL:(&M0G��)&+�o�=#w9Ay���r�����rFF��U������99�����y]�d����~��������������m8Wf���$bsO1i��2�W�������,�(&��3#	�F�b25�uQ��E�2��U��
J1Y��
2�u��{]D*(&U��
J1Y���I�u�j��R���3��������G
��������BiF�r����q�O��*(W���a��eA_��r�e()������[�.�C1Y�������tyr/�auG1iE�y�	PLZg>H��d�0��� �Hi�����	K1Y��0��:a�� �a�I%�u�RL��4L1��NX1YzSw��i�e�;��UQ>�� ����,�)���v�	�w��G��3(]��nY4��W]�	Y6O����N1�
w
2r��@6Y)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H����I��$�b��gQn�S�[7N�����M�M�
�Y��C�*��w����I�z���EA	q��Y6O����N1�
w�Ir��@6Y)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H����I��$Y���M�M�m^7O���'����d�hQPB^V^�����z������t�@oN /��� ����{6�)&��N1I���&+�d6��U���>cf 5�jh#�)�"HL:��s$	�d�I�	�Hr� 1���4�IB1Ab�A1i�9�$k1YzC�n���v�'�M��wN�������C�����c�����#��������K���J
����}%w[��l�%�����K���D���b��7�����c�L$�:�����HAV�������b�&�
2U�5��{M4���xk����Fu�bRo��sEL�� *%'�En�k\����l|����fJ3�v�D^���N��sO���C9�w��Ov��2J
����E������<���EAfI�@.r?���E1iI��,	PLZ�f.H��d�@c�Q���Q"wE�1�)&c�(Q�)��	M�1p�(&��������8D1�7&�\��[��\������q�nWEY�����N��K���yP����� ��$u��]�o�������S������k��������������=3�@�(&[F�8YbT�N$�Tq&F1�U�)�R��8�'F��D��Tq&F1�U�)&S��8�\�3�NND�Y������O��[f�������w�q��������czd���A����D
2;�a&ri��)&�X��(�Bvmr�cf��i��I(&;�i���;�v�����u���Cvm�I;�a&
���]���X��(&Cvm�I;�a&����]{.���BafV&�f���w>0%�w�����������\�{�d���<��^��{e���������=Y6��=���p� #�ld��b2���O�bR�13���I5���d$&�n�9��b2������s$	�G��tPL�`�$��� 1���4�I�.b���g��w�r��Yy`����UQ�|����n�
�-^�������rI�t���]8�%\E�7g��Y^d���"�,,[������<���E������<����"@1�Y����C	�|������6��n����N?�tY�xq����^*/{����x�<�Y��~x����G�����I�������y2�BA��
|�

e�&�a������w��#�{6�K��r��d�&�a����/����3v�%���U�=��
|����I��9��\'�g\��<�kF�z�Kn{ '�wD#�I�
���._M	a���|w����v�=�~�oV�����fe��g]�8�)2�;�c,�7��'�?�����V(6���g��
���|���-���i�d������rW�� $~�;99������`E�S��������������[����5�\#\pACo��+��+����5�L$@$@$@$@$@$07\���1��{D�������G�����K����D��=���������//4�Xw����!0!2���t�+���� 5�]������1���l����  � 000)����������z���mJ��G����*��_�����m���o|��x��e����]����7��o�c�9\.d�d�(ZI�
�Jm2~����`��U��e�x�
���?i��E��9�rO
eC�P]�����y9���Z���@��B%�>���*j��wuxx�&)�x��=���>��C���+���I�Gwu��[g�w��d��q;��zuu9a�+V`����x���������bD�����}��^�&�5���]�����"�8��e��W���wT�r�;����VD������i������?e� ��%��H���2��p�Gq[���/_�\1S����5��R�G�#@1�7�"�9A`����i�&����e��us�=u���Y��<Yr��;~x�~�z��
����3�Y�v��L���k��I;�a&�@i������+V�Cl+���pcB���1�lh��C���i��hA6m)����;1������L��'������L���t������������U�y'+sR�����6��Uh�JU�E������nYw�%���u������~�v��}=��k�����hTx��*���y�aM4�����fp�1Y
���d�?@���M�b���S���3�{H��M1i�:�DA��k���0�dH��M1i�:�D1��kw��,�6�;G2:)�D����k������:��$D&�%�-�%&�������4w�P���
�	9���#�d�>Q	�E�����t����E�	q������MHLTi��O�Mw�X8_s>^��<u��l�S��{6��J1�
wf�'@1���H@����H`
��r7�IB1Ab�AAf�9���#HL:(&M0G�PLF��tPL�`�$�t1��5:ff��t���s�������{�g�W[z���g����D��>��5���io%[�1p�e?����,��'-���b�������X�	�Y��=n� */!<�=P��J�n�mm'\��<E��l�SL�{6��J1�
wf�'@1���H@����H`
��r7�IB1Ab�AAf�9���#HL:(&M0G�PLF��tPL�`�$��� I�1Up�r�V����~�XW���*!1G'����=*1!)g|5������5=�%��n'8�IL����t�T�������aQq	�9��K[�:���0K�}��t�� .�_�JNlQ[����Dg����b2��B1�
w�Ir��@6Y)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H����I��$�$*�
�m�9�*3���m;Fez���������q'1�8��*L��i�
	
����{-IL��*M�me�E�	�Yl�|KTiB`;����%����3z��rU��2�����o���`�(;�2������T����b�."�	�*X�%���T&PL�`e�9@�br<�h��d��_GA�8�4V�{�A1�8�4VP��A����8�4VPL�A����3Kc�d�A1�8�4V�d�3/gdd�}����,n%�g���q}��D%��3����,��bK�8[_%�9���}A:��K|��s/Q�	�	q	�	�	���0Q�9<Q�%�k���J|����s���x��OHM��zR�wm.�5>�d6O�����!�MV��l�3�>�I}��@j(&��FS�E��t��	�H���
2��$�Ab�A1i�9��b2����b�s$	�d�IG���cN�3-����������r���rs��K�Ch�q}�����q"s�IJHK/.��;�n+YThBbjo+[	R��(5�����,��D5���t��Zs_������DU&�fQ\����N^NL����]��l��e��<HM�M\��V�#��J�b�U�����l�[����U�����l�W�}�s���@M�5��>@A�:�D�=��'QL��4Q@
�D�R�D��#M�b2��'QL��4Q@��D�R�D1�:�D���� q��n')w��U\����S�����v�;G��scNd���$,g�����=�%�P����}���	���2��,��'2Q�	���|��t����--v}n����,���K�L�J|����E�����>��f�(&�y`d��
�l�RLf��Y�	PL�3fP#�z�j��i�\}���n�:�<�~����e�����v���~U��:rWG\5�dU,��d���& ��X�;)&�WM@1Y�z'��:��	(&�bQ��RL6�� 2�������D{�ko�3����v�;G��t}�NbBx�$%rAV�^���,����������Jl%��������"����n;����������,IMHJ��?Niz��o}�>����0�S/��l�,�$�gC ����pgV}������PL���� � 1� w��$�$&d&�#I�=����b�s$	�d�I��	�H����v����q������?+��LW��s3Q���=c�zszV������B~�Df3y�Z���m%�������,(n5��mi}����������5!5���/��l�0�$�gC ����pgV}������PL���� � 1� w��$�$&d&�#I�=����b�s$	�d�I��	�H����N���,VGqB6V�c�$!qNf�~|�	L'3���������s2���^W���f'���#��Lw�.����jH\������,���K�^j.��>l=�������,UobkZ����7��?s�Uo.^���h"�\�(&�yB���
�l�RLf��Y�	PL�3fP#@1��6��,�����M0G�PLF��tP��`�$!���I��$�$&�&�#I(&#HL::]L�qf�y��B��t~%��,���Y���Y7^�7��MM�mg]5������Ey	���I�Q'3�����SNh���N�q�S�bs��~6�r��r���8�����_Kg_����>�����DE���A��bu�����t2sx�������tU�yw��E1iM���b���!�MV��l�3�>�I}��@j(&��FS�E��t��	�H���
2��$�Ab�A1i�9��b2����b�s$	�d�I��fH�i'*���h��2����]{$��#�I���:'����i�[��9�9������*4��3K���n���X�����w��;�&d���yg-!/! !2���u�/3EP���U]����}��Bl����=��7Q���MH�V.��V�5��b�yv��$�V�5��b�yv\9�	PL����wG�(&c��:HA�*����=1�T'RL��3q0
���R�H���L�b21�T'RL��3q0����R�H1�*���(&�Jubw��i'Qy9��%�#$ga�+�!2���b������e!,'�V��33!2Q�9	��*9!7��mi�+��j�'2!.!0{!5��t2��{��,�c�&���"����r[�B^��
Ll9��������2�b2�o���(��Ju"���3q0����8��PL����%���dHC�MA���Vtr�EF��bR�o��d������.�Z�)&k�������[+:�d-2����|kE�d����u������t[�z�����>y9��Bs������q��,��:�91�d�>����}�.������
N�Ol?�JN�r�$3���/Vd��R�X�Y��hCn�;i�*L�����wd�,���V"��t1�������s1�����J�Yj(
D�
�Jm2�dj(h����c�o�!@1����R��������,���QL�����d��km���������km�dk��]M1�,���QL���������2���5�%���������DE&*-Q������t���:s�	L��;I��K����d!0���5��5���R��O;��%*0Qu�U���)w&�;�rA������s�yg>!*!2�W��n�IOl%[�E�9��'d'��D'��(�j��!wM��cSL�f���&@1�����~������ �cf"���]�b��u���,�a�&w;�a&����]�b��u��b2�a����cf�k�,|o���$���jBTBf���ITQ+-���^^��L������D��ak�i����}U������6*4�������t���Gw��-c����,JK����+nE������b�fQh"�f��8_1!=�K]&��wm4�G�X�PLZPf�,PLfA�9I %�)�L��,$�)��5AH����P�)@M��@R�B1�5AH����PL*@M�b2$�)�$�������gp&���,n[�vVp����V�n�R5&*.�����,��bs����,�#���_�j�"0�����+
K�K�!${ "�+��E�%�����D5g/����.
���,
�bL��+��v[�b}�	M
��o�[r7]��b�o;��d�<J~��H�b���S���3�{H��M1i�:�DA��k���0�dH��M1i�:�D1��kSL��3�wA��l�{��q~&*)����U_��rlU�3�����96�+.Qy�w��_jBdBbb{���t����������v�^f�x��guA2B`
_�\�'3Q��mc�Wi�X��<d��r�v���D�YJTn��=�6��-*6q&'��,����3!?1��C�[�u���1��>#��Ts.���O����$@1�$�&�Q�5-�%���&BPL6-�%d)@l"�7-�%�)@l"�d�RXB1��&BPL6-�%d)@l"�7��%��[�����-���M�%�3(KW*{��1VjCxNb�XgBNR��L�����mw�&��-����x{M/�@D%&\�����5 #�],$�3!!! !.1V�j6�&c}�����r�$���d&ba.*4}��b?d&��41��EN��wkJ�)�<&����9r��b2���O�bR�13�����W��M������u����a`�#aZ�l��Q|�������y���N�@IDAT wu�UPLV���IA���jr��E��bRq��U��wRL�#���b�*�N
2u�U�{U,��[�n�?��N8�f�����,������j�QW��{��';}{��KTu�$������,��
b�������vu;y	��JKN�&���t_���y�����b����W��v���Xw999.c{�J__�,Y<�fQdb>�������u�./���p���]����X��x�)&��2p�(&3~LO�X��b�~��� k�Vzs�==��D��l�Vzs)��c�H$ro�Vzs)&�c�H$��Fh�7�b2=��D��l�Vzs)��c�H$ro�Vzs���f2��[�:a�^G���/.Q���fQ�92���ubgi���YW�Y�xE�����wmHM���{����tA,b�����@�UV.p��������������$��}=9/7!*���^�B|:a�-m�B��o�dxEN������,�-�C�>�[����RLf�)&�����(&�3	���TC	LAAb�A�&�#I(&#HL:(�L0G��{�I��	�H����I��$�$&d&�#I�=���CSL6�PA	A	��cO����
��#��L�w�u�2���r[��Rs�;Wr��K��L\����%f8������V���q�PQ0��s9�]u&������2t���		�-k�����Bp��N�_:�����N~��&^q��7���~JdNi����v1gq��)&m8Wf���$��N!@1�)O��c^X���V����tyr/�auG1iE�<Y9�;r�"]��b��������<��<��(&�H��� +�auG�V����%1Y����������,LT]n�]4�cN\BhBT�qRs�I�)wS�"Nn���-�qHQ�E-�#�5hCb��R�w��G���p�����]��.����gw:�8��� ��{���vh���v�	P�\����Tgb��>A
����4E%(��B����>KW��]�{?������?(&=F��PL�#gB#�F���4�^M1���ZL
�jT���]�q������Q��3�����Q�����g\-�d5*�}����e���FE���L�q��^��~_��I-R�Nj��Ll�g������t���u��NzN��]��l����l�S��S�
O�Q���9�,)58ck���*5Q���U}BN��me����v}����I������!@��B�w�������8�s�����=SL�4���v������-of#�T	PL��36Y,�ArWC�b2�� ������Gm�bR
ml`��X<j��jhcSL��Q� SC��c��
RL���Z
Y���R���������%!9�$���{e��=���+��a�v���Nx������U-�;�gtb�������� ���$������p9���B{�m��t���fW�)(�w;�9������'<g��mS��:]ug���sQ��s<qy��� H8	:��1�W������b�\^�	PL�g��I�b�=��5	x�W�b��[����tyr/�auG1iE�<Y9�;r�"]��b��������<��<��(&�H��� +�auG�V���PL�������]�vK__�,Z���EI^��K�M��;���9n�4�4�����5:���u����N��9�������������l�bU�^'6']�B!Dq�u�P
���pA*��s���^n�N�a�����-f�������h��-�����:�����6&������s;q���`q�[��E����U~.��]��[�F�>��6��d�=0���(&��D�{V����z*dV����{9�;�I+��y(��yX�����<��<��(&�H����,�auG1iE�<Y9�;r�"]��b����]�[���E��%cQ^:���"�p_|-�a{Y\����R��s�n����P�9��71�K!>�&g|\�Az�BU'�'����KO�F�'��D�I��|v��Y��8C���rrm(K?g�^ K�$.����� V�������*7��>'9KR����)���������g}�]_�J���=a�\�U��bR�.cgI�b2K��M-X��b�E���S�%F��DrOg�`��Q�:��,U����{bT�N��Lg�`��Q�:�b2U���QL&F��D
�Tq&F��Q�:�b2U����-&'nb"*1�M��"�(9�r�Xyy@t��}����uyQ���������P�9���o;�:2��F����������qT�������P
q�/��v�����0�r����Eo8!q�[�B`���&�#�Jm�����z�s���u��U-����gxBX��>!9���8�g�bk\�N�[���-I�aW�Yj/��'?]��[7��m���e�d�����	t���x�����i��Mr��W��u��)��MAf��2�W������\�������=��p��B1YI���b��se��J"6��6�+�P�U��'w��Y(&+�������$��JL�F\�����U�%�A����h�k��k��L\��vq (!IQ�9��������3.�]���?�+;1*8��p�G]�p����c�U����>���R�W����hC^�6� 3Qu�W��]���%�"�������LM�;��+�������C������hC~"6��n/$�[�JO�C�����|�U��r�N���	PL*fx�$�z5��&�06YH��M�v��L�!
�6��0��4���v��L�!
�6���0�dH��MAf�:�D�!
�6���0�dHC�
9��>���32*;�����~Y�h�������I'8KU�����NTk��Q��
O�Hl�[p����V����<!-�����u����&�L�8c�8���oq!D(��
����I�#�".HG��mTk�[���6$'�!9!L�����+�D�p��b-����-����6��-��Y'��ny�@J(&S�0$����)&��S�Y�.�C��<��(&�H��� +�auG�V���PL�������"]��b��������<d�<�����ty��rVw�V���hpG�'d%d#.HIlS��~_��~������t,G�vkp�mkqng���xA�:&��R��!K}e)�./�q��xh1/��[���|'<��{��D������YJ/'����g�#�|�P'}T~��	PLf���Z!@1�
���R�5�+�������PL6�+��di�l,�7�+���i�l,�dc���M1����PL6�+��di�l,�7�+���i�l,�� k������2��W~:�����1Vk���-�/�S/)��,JJ�+
���D�'�������%E��v�^��y��X�j�����X�����1T���b,�[����^��gg��9;��d�>X~��A�b��9S���3�{H��M1i�:�DA��k���0�dH��M1i�:�D1��kSL��3Q��4���n�:�D1��k�� �#�������;�X��,JJT~:y�#�"d$���<��
.���|��wl������k�m�;*���28��ok�5�=1���X�jO�E>Tz��N��jO��Y��^���6�8����������+�z:+&k1b�(&g�$0gPL�=

2;�a&ri��)&�X��(�Bvmr�cf��i��)&�X��(&Cvm�I;�a&
���]���X��(&Cvm
2;�a&ri��~�a��y�,]�L;����t�!��e"�3������8�8�����(0�}�n*HQ�	����^��W�L�3y��������	�A�b2
��A���OAf�:�D�!
�6���0YH��M�v��L�!
�6���0�dH��M1i�:�DA��k���0�dH��MAf�:�D�!
�vIL.[�L�s`������DU%����s�t(�������y���Q;����3� �cf"���]�b��u���,�a�&w;�a&����]�b��u��b2�a����cf� i�����u��b2�a�� �cf"���]�ZL�}2f��(&��w?[���{|dv��L���kSL��3Q��4���n�:�D1��kSL��3QL�4���v��Ld!
�6���3QL�4��dv��L���kSL��f&[�����R%@1�*��`d�x��]
ml`��X<j�djhc�{,�A�I5���)&c��
RL���
L1�Gm��L
ml`r���6H1��660Y,�ArWC�b2���d?<�u����� �cf"���]�b��u���,�a�&w;�a&����]�b��u��b2�a����cf� i�����u��b2�a�� �cf"���]�b��53������l$�*��Tq�� ���6H�jhcSL��Q� SC��c��
RL���
L1�Gm�bR
ml`��X<j�djhc�{,�A�I5���)�b��
�������x8��(&������������0��4���v��Ld!
�6���3QL�4���v��L�!
�6���0YH��M�v��L�!
�6��0��4���v������-of#�T	PL��36Y,�ArWC�b2�� ������Gm�bR
ml`��X<j��jhcSL��Q� SC��c��
RL���
LA�Gm�����������6&@1���o�(&��(��X���=�a����cf� i�����u��b2�a����cf��i��)&�X��(�Bvmr�cf��i��)��X���=�a����c�L�(&my3	�J�b2U���(�b��
�������x�)����&�X<j��jhcSL��Q��TC�b2�� ������Gm�bR
ml`
�X<j����660�d,�1��6~x|�$@1i�=@Af�:�D�!
�6���0YH��M�v��L�!
�6���0�dH��M1i�:�DA��k���0�dH��MAf�:�D�!
�6��kf�%@1i���H U����
FA�Gm����������6HA��660���Q��TC�b2�� �������x�)����&�X<j��jhcS���Q$w5���)&c�p��	PL����['�I��
2;�a&ri��)&�X��(�Bvmr�cf��i��)&�X��(&Cvm�I;�a&
���]���X��(&Cvm
2;�a&ri��)&�X3�-�I[��FM��q�|�������?(�v�����%I^g�y�\p�a�-����c�������h\���'%��<��ty&�~�

%]�y- �6�|rrR�m�&����b��&�pY�
����������3�l�� 's���$e�|��������"#�{$~	�eer��{�B8��~'�ld���922��7u������������$7�v.���}��dD��k�iX2^q�r��Wv~          +�E�����gd{�����&p��w�{����������.��bY�re�����/�z����x�<���Y�[����b�d�,YI���Jo.*;P�����K����b	�r�Xa�*�ArOg�`�M���w�
�%K�$^���(}���w��sk,Y�JUT	�{#�Z���2@���:����H��
������8�E��"�&�����dB5������e���{����O��pl4
*���	�75���z{{��G���������H`�����6m����Z��[7w�h�3�l��-��|��������G �l���~�z����k�f�&�aV�������l2q�}dr7C]��gL��0���f�����2f7<c�uY"nmY������P�%��e8�nx����D�^����gL��f"c������$@1�&��Xd�|�F�]�l|\��x>Z�dZd���{<�Q�I-��q)&��h�RLj���K1�Gk��L�l|\r���5J1�E6>.Y<�Qr�"�b2�G���d�>;�s�I�o
2;�a&ri��)&�X��(�Bvmr�cf��i��)&�X��(&Cvm�I;�a&
���]���X��(&Cvm
2;�a&ri��)&�X3�-�I[��F���Lgl0
�X<j����660�d,�A
25����=�� �������x�)&��������6HA��660���Q��TC��,�� ����
L1���mL�b���:	PL�}P���3�{H��M1i�:�DA��k���0�dH��M1i�:�D1��kSL��3Q��4���n�:�D1��kS���3�{H��M1i���l	PL��f6H��d�8c�Q���Q$w5���)&c��
R����
L��x�)&��������6H1��660�d,�A
25����=�� �����d�x��]
ml`��X<lc�m����I�b��{����u���Cvm�I;�a&
���]���X��(&Cvm�I;�a&����]�b��u���,�a�&w;�a&����]����u���Cvm�I;��dK�b��7��@�(&S���,�� ����
L1�Gm��L
ml`r���6H1��660�d,�A�I5���)&c��
R����
L��x�)&���� ���6H�jhcSL���`��l����N�v�dv��L���kSL��3Q��4���n�:�D1��kSL��3QL�4���v��Ld!
�6���3QL�4��dv��L���kSL��f&[�����R%@1�*��`d�x��]
ml`��X<j�djhc�{,�A�I5���)&c��
RL���
L1�Gm��L
ml`r���6H1��660Y,�ArWC�b2���d?<�u����� �cf"���]�b��u���,�a�&w;�a&����]�b��u��b2�a����cf� i�����u��b2�a�� �cf"���]�b��53������l$�*��Tq�� ���6H�jhcSL��Q� SC��c��
RL���
L1�Gm�bR
ml`��X<j�djhc�{,�A�I5���)�b��
�������x8��(&������������0��4���v��Ld!
�6���3QL�4���v��L�!
�6���0YH��M�v��L�!
�6��0��4���v������-of#�T	PL��36Y,�ArWC�b2�� ������Gm�bR
ml`��X<j��jhcSL��Q� SC��c��
RL���
LA�Gm�����������6&@1���o�(&��(��X���=�a����cf� i�����u��b2�a����cf��i��)&�X��(�Bvmr�cf��i��)��X���=�a����c�L�(&my3	�J�b2U���(�b��
�������x�)����&�X<j��jhcSL��Q��TC�b2�� ������Gm�bR
ml`
�X<j����660�d,�1��6~x|�$@1i�=@Af�:�D���������8���"����
]Et;.��*X��{w�kGQWE}����b�^���(*TPA��ETl�y�����'s�N``rn&���a'��{N��lL��9'�n�`2�u�&��F�y��Y�k"��k��'�g��`2�n�`2�u�&��F�y��Y�k"��k��' g�	��F�y��p��V�`2�7�!P�����XY"Oj+qO�6�`��D��V��F�X0��<��$�L�6�`��D��VL�F�X0�d"Oj+	�R�M,�D��VL�F�X0Y"Oj+qO�6�`��DV6`��|��t&��
������{\#�<�d8�xMdq�p������D0�7O0�:^�d\#�<�d8�xMdq�p������D0�7O@�:^�q�p�����)��dXojC�^&��3�0�D��V��mb���<��$ K�6�`�yR[I0�mb���<��$�L�6�`��D��V��F�X0��<��$�L�6�`�D��V��mb���<�l��
����L��  g�	��F�y��p�������qg��`2�n�`2�u�&���F�y��p�������qg��`2�n��,�u�&����	&�YSSX������@�
L�+gbad�<���=5���	&yR[I@�mb��'����`25���	&yR[I0�mb���<��$ K�6�`�yR[I0�mb�d�<���=5���	&yX��&��c� ��7@@�:^�q�p�����5��5����:^�d\#�<�d8�xM�q�p�����5��5����:^�d\#�<Y8�xM��5��L������a��
�z ��W����yR[�{j��L&�����,5���qO�Im%�dj��L&����`25���	&yR[I@�mb��'����`25���	�yR[�{j��L&���L6����#@0�o��,�u�&����	&�Y�k" �k���=�u�&���F�y��p���&���	&�Y�k" �k���=�u�&���F�y�p���p�k��'�gMMa&�zS�*@0Y�����%�����h&�L�Im%Yj�������J���h&�L�Im%�dj��L&�����,5���qO�Im%�dj���%�����h&�L�ae �l��MG�`2��Y8�xM��5��L����D@�7�{8�xM�q�p�����5L�5��L����D@�7�{8�xM�q�p�d���5��7O0����
L���6�U�`�^9# K�Im%���&L0����J��h�=�'�����&L0����J���h&�L�Im%Yj�������J���h& K�Im%���&L0����,@0�����d���p���p�k��'�g���,�n�p���&���	&�Y�k"��k��'�g���,�n�p���&���	��Y�k�=�n�`2�55� ��Mm���d�r&F@����J�S�M,�`2�'��d��&�{"Oj+	&S�M,�`2�'�����&L0����J��h�=�'�����&L@����J�S�M,�`2���
X�`�<6��pd���5��7O0�:^Y\#�<����5L�5��L����D0�7O0�:^Y\#�<����5L�5��������{\#�<�d8kj
+@0����W��z�L,��,�'����F�X0�d"Oj+	�R�M,�D��VL�F�X0�d"Oj+	&S�M,�`2�'��d��&�{"Oj+	&S�M,��,�'����F�X0�d"+��d>xl:�����Y�k�=�n�`2�u�&��F�y��Y�k"��k��'�g��`2�n�`2�u�&��F�y��Y�k"��k��' g�	��F�y��p��V�`2�7�!P�����XY"Oj+qO�6�`��D��V��F�X0��<��$�L�6�`��D��VL�F�X0�d"Oj+	�R�M,�D��VL�F�X0Y"Oj+qO�6�`��DV6`��|��t&��
������{\#����o/���-��R��G�pWxMd����<�z���k�Y���m�v(�FT`���9���q�9s��3��6mj�n�my6�k% +�A��<���M�w�y�Z�ha]�v-�FT`�d�9����}��	���[��m�c����jE ��P)�P������Y�k�=�n^7��l��5k�����)�Y��Zp/	��/�`�o�����6y��0�R�L����`�<�>������6�xc�g+*�V��s���~�-����_~��
S�0����^,����?�.����������@^&�r$��� �w�	��Y�k�=�n�`2�u�&��F�y��Y�k"��k��'�g��`2�n�`2�u�&��F�y��Y�k"��k��' g�	��F�y��p��V�`2�7�!P�����XY"Oj+qO�6�`��D��V��F�X0��<��$�L�6�`��D��VL�F�X0�d"Oj+	�R�M,�D��VL�F�X0Y"Oj+qO�6�`��DV6`��|��t&��
������{\#�<�d8�xMdq�p������D0�7O0�:^�d\#�<�d8�xMdq�p������D0�7O@�:^�q�p�����)��dXojk�s�����G��?lxX��5o��6�h#�u�]�S�N��I��{H0���,�u�&����	&�Y�k" �k���=�u�&���F�y��p���&���	&�Y�k" �k���=�u�&���F�y�p���p�k��'�gMMa&�zS[���/��{��k���f��i?����A�RK-eM�6�UVY��8��c�=�U�V���`2�������{\#�<�d8�xMdq�p������D0�7O0�:^�d\#�<�d8�xMdq�p������D0�7O@�:^�q�p�����)��dXojk�
F�����O�I�&�6�lc�z����x�^{�5[k��l���~���/dO	&�0�Jt������R�nnO�U��9��q�8q�s�1����S��8�B0Y,����{�N;�4{������Zl��Q6`��0t�PD	L�.������A�Y����.+Z��i	���lr���>i��s�������]������V5�[$�{H�_	&ASMp����T���Br��a���p�������j9�<g�u��;�.��B;���E�Av�`2��d�����];?��w��n|��^�5�^�cO0�{y�S+��q'���<��������V���#P�Z�{/���W_m'�t�VI��e
#�{��Z&�E�=/�y9��Gjz`������|�)��q�W��?����2d�u�����
7���g���`2-�����4	���5� ��ib	�!�k��{M�K&C(����&!�L�P�Y�5MB,!�	�\��k��X�{��u��4	���5� ��i��|L��8�)
<���v��g�������|W������v����r�-g_|�u����#��N0�
k�B	�J������KV@PS�%����N\��K�����,u���^�%��d�����,�/$�I��d��dI}!�������$K�qO��d�%YX���Dv!]��~�������j��s��m��F�S�L�����>��s���k�o��5>����4TK�I@V�%����-\�|���.i/�=m����^�%��di�.��.i/% K[�t���vI{)AM�������K�KqO[�t�d�]�^�{����'�,����/@0���!{����#��#��:���?���,�r��9��gO���n����w���,������}����Y}H����5�N?�tk�����]��o��SO=�q�����q���7�,�{����S�N���;��]vY���k��L
����7J����:�2��������W\q����'�E�za�s!o���yQ/80����'����-��tO{��7�z��gg�q����P������^��X�SO=ew�y�m��&�!�~��-�����_��V=��m�������,e�����k�V[m�h��m�&�@��b������.]L��.������~���/������a������Yp�A����� �3 � � � � ��&��_?Sq&�S�`�>5)+�

9��z��}0��K���y���;�`�L^z����O�(���G��c_n�����y��>��z���_���_�%�-�Ru=TCE��������z�t����@����Y�k�=�n~���������K/mz��)��a��kQ|����s�����=%�S��O�3g��	&X�f��c����4��K����[9�����>=}�t�8q����
7��������>��Vk�#
!��U������GzAH��Vr���|�������}���6���|�I��a���g�q�m������kq����1&�'T����,�R�u����2�^�Y��$���U����,�Rc�E��>�{�Y��$�:��V�}����KI��W���,��gY��p��V�}�����.%�^���,cL��%%eK�`2[�������w�mG}�#c������+��J����.���!5�{�Q�3i, �LC�t�d�]�^�{����'�)���R��.]>��]�^J@��p��q/���R���K��{i�����-\�|�K������K�O@V�%����-\�|���.,m��
��)<��cv�)�X������n+�l��?��J�;�A�Y�^�R���+�`2����,�u�&����	j�Y�k�=�n�p�������qg���,�n�p���j���qg�	��F�y�p���p�k��'�gMMa&�zS[5j��?��M��/��z��]c/~�a;����]�vv����[lQ�3i, �LC�t�d�]�^�{����'�)���R��.]>��]�^J@��p��q/���R���K��{i�����-\�|�K������K�O@V�%����-\�|���.,m��
��)L�4��j���g�}l��!5j<�������������?�x[g�uj|&��i��.����K�KqO[�t�5�]�^�{�������K�K	��.]>��]�^J@��p��q/���R����K��{i������p��	�J������K�O0Y���
_�`��C� e�_~��x�;��#�i��v���m����(o��f����9s������w���]v������'���+�7o�M�>��������������k��<���<�������1��_t�a
#�{��Z��E������3g��K.i���Z�J�����k_}��5j����i�H ��@�E�hx�o����Yfk��u�Z~MK��d��%�L�Ik���}���~���-[�U
�	�^�W��@�T\�`28964�(�l��q6p�@���{�y�����+�z����_�����_�~~,�����b�-d7	&�0S	'@0Yq��F ��dpr*D��&+���� �NN�T��d����a���9��������>�Tw��<��M�8���Y�f���k[�=l��v���[���(u����u��� ���*��@`a&V��!���
L.��C�� �\X9��*@0��R|��	L6�#���M��_�/���w��������\z��}���rO�G�{���dHm�B�r&+�X���K�`�\���@�LV��fO(��d����� ���c]i{J0YiG�����d�';�@f&3s(�r+@0��C��!����
6��
L����cdF�`23��
�g��z�8B
L���.*G�`�r�5{�@�&�%O�T��d�k��r	L�K�z����9������v���\	\}��6{�l;���L!% P3g��������{�g�G���T�<y��a^�����O���_@��?~��1�Z�nmGyd}I �@5���� �<F�e�@�������cG���O}Oy�M�`�l�T� � � � � � �@�LV��fO@@@@@@(��d���@@@@@@�� ���c��"� � � � � � P6����S1 � � � � � ��#@0Y9��=E@@@@@@�l�e��b@@@@@@*G�`�r�5{� � � � � � �@�&�FO� � � � � � �T��d�k�@@@@@@��	L����@@@@@@����9��) � � � � � �e �,=#� � � � � � P9��s��S@@@@@@�&@0Y6z*F@@@@@@�r&+�X�� � � � � � ��M�`�l�T� � � � � � �@�LV��fO@@@@@@(��d��������������f��a?����������KZ�&M�U�V��
+X�F��^0�@����������o���~��g����^zik��Y������~�q����9s�WU���ys���c��� �@�	�����������sk���VZ�6�p��g��m_|��?��������r�-g+����h���Yf��aT���y���W^Y���kt�����1c����k��1!�@�	�1i�$��R�.]j������O�R����������[���/_���{�_~��F�6��i�����)�E"�@nt����L�L�;w�u����}f� �a<����e �,:U"�0�����~����>������������������z��e����-���S�A�
�5k������������O�7�z���S'�u�]m��v�7��-�X�����m����7�x�jY����nk/��B�b~G�
�=]��?����yF����z��9r���y����������Yg��������:t��C�?�@����:�������~�q����;����o�����;��?������'���~�m;�����O?5������x�^|�E�2e�a\���/����������+V��^�|����9i��Q������CW[m5�j���=��[o�_��E~A��(8���.��7:�uI�ia��,�}�lJ���\����^� �7|��i���v�%�X����i����RK�ZQ���O?�d{����z������Z<P�CU|r,������������Z[����Z�m�N:���C�����>���r�)6m�4���O��7�G�Q���@������O�-��
[=;O;����p�
~��q�j��k��s�9���t���I���K���[7;���m��������=��
I��}N�6����]����:��~��v��G�Z�^�����_����#�>��c�2d����%�I]�<����������{��������=�]/7{��P���{���.��"���O|�J���:�������{��+un�����"�O�BT������m��7�/L���<�)��)��}�l�u�=s�ad\��,z���"��.r��a��n�"FF����������s���������2�Gl�C@���6�(r7���{�=��#���3#�2)r7��{�������
6��&^z��~���.]���@� �ZE�������������Z�!����y���s��>��k�u}4u�����/�6�`n��?�����X��-�^��F����^���!r���@\������2�"���j3 P�.0��N�����,����g+�&]��^H�K�������g"�����r=FD���h��W�������������tm��v�w�Quv��w�enH��k���O��Y�
S�p�q/3D���
U��3.�,�C����p�3���,����`B���.\��`�*������I'���	����G&L�� �'�p�?Ox������_��)��)��y�����E�k]�C�L �@)�>}����\+���c[�#���V�{s���������P�p�e�E���J��.�Dzx���p]#F�w\����\k�j�1c�L>��s��PM�_�L]��{����[n����:G�L����]��P:�m��V
M���~�1����{�H/�kr��D����\�V�SO=U�{��y��g#7$O��]���g����_@�a���������6�,����Lm���<�)����N��4���J�z��J9��g�P��7<�r�-5�E���ucD�l�M������@7��o���P�t#^<��;7�[��� �]X�V�:�(�t��E��fB���q��������~��j�t�������A7��I�8n���G�>lp]1�W3�x]�\y�������_�����W�yF����N�&�l�+��"r����7�u4h���`R/]�:G�f�|��jx:�����Q1�IDATw"��.��J��_�i�&:���k�D���1-#����q��=W�\~A��-�s��B��S�0���^��-�\�g6��0��4���J�z��tg&�.�Z�!�b_~��������<~�xs]��G}�l���@���������^r�cI�nD���':��fs]���=�\�Js]��qT\�%?>����w]��o����m�j��T��;��c�3.po��q��Lc��V~]����u]�z������Z�k���������<y����xe����.����G��W^����I��i,��u���e��w�m���\4�Z-�1�����_��.M�HL P:g���v�A��[�LE��b���g�y���.���z�����j��A��K������E�f�|��v��g��b�\����]v��w���]�5~<�j�h���z��F���u�4j�(�9��1&��M�>�g��<�i�1�������4T��^{�wa�D���Ya���@c��-`�����U@c�h\�g�q	
��*���I�&Q�V��yF��h|���7���{���7�(|�� P��v�W�����[��s���u����~�Jg��i�{���9�F���{�����fR��:�' pa@�1h5��Z&h����WR=B����[�zR�1�VM�u��^z�-���e�+�^|��}�]��Z-��w�=�G��v�z�a��nZ�����)��=���F�<��l5D����u��W�S����������
X@-�5���gt�q/)$��������&~�3��)�>+���� ��m�zXo��nF�[|.��#?����es�0�hMPC� �$��f�N9������f�o����i��fn�&S��M���3�P��J�4i�ou0f��i����g`.�H��u �S7���.���t�7���H���t7���c���q��y���m-[���S�Z��	���3w#]�������{��/z��uG]X�O@����9��U-�4_�t����=���{�8������d.��-�t^R�)������=����@ ��^��^P�?]�����������?����O4$���G����g��������7���������������W�O��=����5��*���U���
V��<��Y�����b2iG������\��<�I�d]v���� P���VR�w�������x����<����,���X�\����~Q�N�"BV����2�,������^�o��U��
V+�0/r!f��Zk��.h�|�%��[�ql����=��Z*�+4��w�m��V�{`�������w��Q��J���k�s�9�_��[s�K��A���9�u��{�q/RE�����.��pj�Th�J:���;#��)7�`��{���j������ZL�P���VU�*�t
��'���Pj��R�:w���a������9*��g�������T\,�#�@����������xf��?���
-&���%�*���R����l�5��YwSn�z��1��5tX��	�h�xj�?f��6q�1V}��G�Y�f�q�Yg�p�J7���o��F����Lo���?���f*D@�'����=�3��������)S��k���3i,��C��������U�/��K��N*�������^��f��d5V~A��4����4&��o�������RcJ�~i��������,����������Sk(&�,����tC�����]v�?GZZ�t_�"��Q�\�'���|����7���[������f�{g[���b���O�)�0-&��M�>�uO�3�|���n�&swH��<
�+W
���Z�4k��I�����#G��j
���$	�����CI7������>Xl��i��j�SW��F���2����e
&@�X@�A�t�M�KE=|�5��XTWFn&?��d�����1��q����<��L �����:���+}�����d�M
F/U�����������/^�r�4\�����\uM�"\+�j;�Z4�|`;v�/Z�����Y3�v�mm��Qv�����'�_4�KO>�dU��
1�@ �u
&yf������&�K@�������{��|uA������j�%|�1�����j��3?_�C,@�_@c��������o1��wo;��jL%���&2��k�&��#� �@
�+�:[c�h��'�x����x�zx������J�Fk'���]x��>08��#���-�H=��KQ�<��i<l�����.(zB-%���ZK�ET�����c�=��y�����'��_������_��T��������ZI���z����M�4���u��C�!�b��{s��V[�/ ����<���qgOJL�va)�PE
���]w����+�@u��ru���N�����w@@�~��������Za�B7n�u���$�������{���Z���~��G�glv�����+T��^tP�����o�%����N���w�y��.���w�i_~�����������3��,>M�0�h�AB�b1��<�+P��^�?j5����]�JG�0��{����O��]F�3��RWh
��'T����I]�\���:G-��x���~������=z�����v���~��UVY���������KX��Z/q1!�@>4���3��}X��m�g6�����^�|Mv�\�����#��\7 �k%Pr�n�����
��-z���J~�� ���a��E�m\�8��3#��C"L���#7V\4h����8����Q����e���g�Qc=@�2�t�����=����t��v/XE�E��u�
0��wc�E��~z�n�"
���k
�q�����/����_�\ �@e
��{�k����{q�V��>�(rcdG�-�\�Z"E��v���j��={Fn�a��[��� �����_����%w��P���k}������9�����Y�.�}9���He���^�F�F������<�j�*r/Y�X����{��gt.�mZ�g6��0���&���	X�6��A��zh� �q������1c"7S4o����T������h��_O�8�f!,A������o����$r�	E��M���^�Xy���M��$������G�t�����]�F�:u��}�����@ ���Q��,�\����_�\I�p�E��y-��������E�\���c�=��?������?}���>8p�gG��d��q�Z�n�V��'�z��U@�'m���/p*|�mr-*��?��g<��H/I������~��-t�EE����\����r�����I=wq�_D���Zt��gG�~��uO���2��,��y������z	�����:w��k�.�����)S��sP����\�K�]��M���5�_0���l��a<�������k����Cy(�����������5���j�?r�Hs�~����?�w�Z�l?�.��M@�������qk5�dmc1�������?�w'�1)w�ygs-��=����+X���h����[�u�0>��po����j~���Rq�v0���ilI�#������}�����5j��w�8k�,s-�M]�o���3������q�\Xi�Rw����sL.�\�	Y@����U�k�?��J���#_}�U����5��5�M��kH��n`5������*I�Br-0��\u=s��n��_~y����fG�M��Q��/[������^�Fk����:����>s���������9.���V�k�m����K�\��sT����r]�g6��0�KxfSaX
tw	&��c�+O@�������y�-����K�.�WXaso�q��Zk��b�@`��Kh���������g]wC6y�����z���>8��)�����F[7�z�s�����	*W@���4.���\�k�+4�������X�z�7b����K��/���8�W��N�8�+{����y����FU..{�����k���9z9JAcm��]�n�[z���E��Ac��.^���
\W����U[�,G�|�/��^�%�!C��>����kMz�A�=����
��k���Uz��p/��zIK!���njzik�����y������EyfS�������lr����!���ew�-��}�2Ro��m��F7�������[�n��x�7{�-��o_{���������y�xM�>���M_���
6�`���A�T3!�n�$���{l��Q��{6��uR+�&M��DR�H�c�z�uc��L=������W=E0!���v���Nr]�����Q/<���k>�;v��r��b���g�R���O*O`�����t�����z�q�_�#�N��_��W�m�����������j^�G=��7�x���-����[����U�e�)��SO��^�?GQ���iQ���3<�)���,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@h�s���y��Y��M���� � � �@��d�"� � �4������O�n#F��.]�4����V�7��
f�.��
8p>�f5 � � ��&��bk@@@�_`�5��)S����?o�m�].\���*����O�>>���N� � � ���L��� � � � �L���v�X�~���[ni����F@@j ��M�� � � �� ����a�@@@��5HX� � �T��M7�d�����J�[�n6v�X{��l�����2�����o;���),�f��mc�����~�������Z�&M�m����sg�|��m������SN9����;��3�}�����m��i��W�T[&W[m5���|`�����i��6�l3_g���������[!j���v[�s�=���U��#G���>����zk�}��m�%������^}�U{��wl���}�8��.�u��F�(K���;�&L�`/���}��g��O?��g�M7��v���/���6x�`����}�][k��|�*������}��W������~��[l1[a�l�u���]�����'[j���5&@@@ s��;$l � � P>��:�n��V;��m�-�����>������Q�F�p�-����:�fK,����/���n��6{������?����y�|���J+�l`={�4���r�U�`<\,5N��3=���m��7��`��L��C���'���?nS�N5����+�z��g=z��}���o�B�{����;�8k���]����S���T!������k|`x����m�>}�4�{�9�4i�}���>����+�ln�������BPm��Y�|Xz����{��g2���_��+x�u�]������[[��}�����^�����7��u4��x�
�6m�)h���w�UW������w?�fq\U3 � � �@&��O� � � �@�
��6�l����?����T��PN����s�9�N8�<j�]q���?�&�l�[�)����m�����[o���_|��
�]��y��~.H0����W��Z���Q��T@w�G�0R�
O?�t�����~?�"Q�����_����'�������~�����.���KM!l����U�V~���S-!��R��?��Oj���}���d����ZY�T��g�����.���O>���:��_�Al�>}|=
.8^~���X��Z�*�����_��T{��m'�t�����@@@�	Lf�`�) � � �@�
���k���U��jU������q�l��!v��w[�|�����=������{�=u���_��O���c}���l�=��a��U�f}�-[����^{��[/*dTW�j���k���o�0�������W��T��/��w���Z/�����BW��T����v��w�n<��C|`�P�{���w�� R6��U��M���~��/��u���w��V��^{�wP��Q^��?�|����_�~���_��G�6����a������oi�}U���>���p�
��Xu��meB@@�&@0��#�� � � �e(�
�4��������?�Z��u�ZP*�+t]�VO<��oix���Z�V��"U����MA��g�](������b�o����RSA��(�|��]t�F�>��j��W���R-��}��S�.���Y���S��������!g������nX���W�����~����P-4��'�WR�A�\�
���`Ra�Z]�K]���s�UV���Zr���BR����Z[��d@@(��d���#� � �(�j1��Z[�hQ�u����"U���)+�g�y��R��B3�NT��nH5���?����^|RP����Z*jI�����k�Mj��������Z�.f�9���S]�N�0���jm����Z��M�>[���+dU��ja9{�lZTj<N�iR+�u�Y�n��FS��j&�:����NU�;��[��Zu��V������.H}|@@)@0R��@@@���I�j<���l�%���b�BT���}j�W&�x�
���+}��
,��w�m��Q�t�M}X���[��Q��ka��`R��j�G�>�O�^U��)(5jT|�oI�.O�{�=��U����Q�(�T���g����Ra�������"6L^w�u��s������jl��j&�ZU-R����Q��o���m��kW�m�Z�[,H�|@@H[�`2ma�G@@�@!�T(���xR0��];�8Lj�>�JTw�����P-�O��v�����
	S<�T����~j�x�-����jo�����;���������n���h���������O���_��������F��C�+���4N��m-L
%?��S���;���96k��5j��I�UP�}�������O�cA�$��.���`R�U����/������lU�M���O?�/����u��;���l���*U<�@@@��
L����@@@�l	,J0Y�us��G�q�~�mX�e��y�������0)�T���������`Ra��7�l�{lb0����;�\-PT�
�F�aj	������*Tk
=_|�ES��3f�������<����U�>��
����e�R����M�LcRr�!~<K�����������?���U�YhYZ���$����k���z��;v�S���TKM�[�� � �dM�`2kG��A@@�(����B@��S7�jMKR!�Z>��������q���P��*�|��G|���t����.Q�L^~����V��X6��^{��>��{��}Y����s�]w5�={����W_}��Qaea��g�y��*��K.�����P��9u�T�s�=}0�U~��;���������Ps�M6��=���8�����W����
:�� U��O�#���u*X�U�=�\{������N�K/��Z}�� � �dB��\1!� � � �\�����F�+��"��_���p��3p@���k�"��k��|�\����"����:���n|�����=����_��W__���A7~�_��[Dn����vU�w�_��CE���n��5�n����u�q�
���_>�i���>� :th��:�D�:u�\��U�U��h��6����U�3�n7����J2r]��U�;�����V_}������W�t��F�uc�������U��'[7.f�Z�V-�>}��>�S�2�O��jt�a�En,���3���b@@���efK�@@@��,l0y�
7��L!��g�������9s"��1r]�F
]w���V��>|���k��:��1rcS�`�����\��>hS�L�.U�^�z�@�����e������n-��rQ�>}�BT����h�W�Z�l=��s>�s�5F������V��k�����'���J+��u�Y�l76�_��j��\�E&4����������#�z4r�B�!C���U&���K�.�k��T�[�����v�E���J�Z���~�m�ZB�z���?G�Ef���������9���nq�
6� r--��@@��]��;\&@@@��X��\]pf�������KWu7�Z��G5V��u���n��&[o����]�f�������`���j��|��[�h��������a��4���k��)S|�����M�4�w%���m����BHs��]x����f���~����V�J�\���fu!�^��1c��nc�S�R�z��~�I�*�\���PU���U�e����n���	����;������4u��.k���*����M�&u��}�W�LcQj�
]��;��.�����r���66���#�X��~��O>�]���\m�����{WYj�L�5�� � �dM�`2kG��A@@�(�����>T0����"?��C���EM�H�nMm����![!��n�����&�����B�Y�f���t]��>��c����c�=6q�I�v
!5��J�u�:5v����n�������@�U�{����I�����-
O����?�����j�H��M�6���������]v���z�-?����t]��zU�H}������Lm[�6m�{��v����pRca�H��K��ZR���k���Zn�0TcI*�}���L�[�<���o���y��V��'m � � ����	�@@����@���o���������G��[m��oY��Z�}��7������Z���N����Z������~��'�2Q��F����|����u}��I�6���s�+�����S-g���["*$U��O!g!U����F�(T����B��v���v|�����&���W��I- 0���Z+*�����T}���j��]���5Dj�T��/�����u�������&���0��Su�.\}��m���}F^�)s&@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���Pv@@@@@@�,
Lf���M � � � � � ��L�`2g��A@@@@@@ ��Y<*l � � � � � �9 ���ew@@@@@@���d�
�� � � � � � �@�&sv@�@@@@@@�(@0����6!� � � � � � �3���[�����IEND�B`�
#18Dilip Kumar
dilipbalaut@gmail.com
In reply to: Julien Tachoires (#17)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Fri, Oct 28, 2022 at 10:55 PM Julien Tachoires <julmon@gmail.com> wrote:

Hi,

Le lun. 26 sept. 2022 à 15:57, Simon Riggs
<simon.riggs@enterprisedb.com> a écrit :

On Fri, 16 Sept 2022 at 13:20, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

Thanks for the review.

v10 attached

v11 attached, corrected for recent commit
14ff44f80c09718d43d853363941457f5468cc03.

Please find below the performance tests results I have produced for this patch.
Attaching some charts and the scripts used to reproduce these tests.

1. Assumption

The number of sub-transaction issued by only one long running
transaction may affect global TPS throughput if the number of
sub-transaction exceeds 64 (sub-overflow)

2. Testing scenario

Based on pgbench, 2 different types of DB activity are applied concurrently:
- 1 long running transaction, including N sub-transactions
- X pgbench clients running read-only workload

Tests are executed with a varying number of sub-transactions: from 0 to 128
Key metric is the TPS rate reported by pgbench runs in read-only mode

Tests are executed against
- HEAD (14a737)
- HEAD (14a737) + 002_minimize_calls_to_SubTransSetParent.v11.patch

3. Long transaction anatomy

Two different long transactions are tested because they don't have the
exact same impact on performance.

Transaction number 1 includes one UPDATE affecting each row of
pgbench_accounts, plus an additional UPDATE affecting only one row but
executed in its own rollbacked sub-transaction:
BEGIN;
SAVEPOINT s1;
SAVEPOINT s2;
-- ...
SAVEPOINT sN - 1;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid > 0;
SAVEPOINT sN;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid = 12345;
ROLLBACK TO SAVEPOINT sN;
-- sleeping until the end of the test
ROLLBACK;

Transaction 2 includes one UPDATE affecting each row of pgbench_accounts:
BEGIN;
SAVEPOINT s1;
SAVEPOINT s2;
-- ...
SAVEPOINT sN;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid > 0;
-- sleeping until the end of the test
ROLLBACK;

4. Test results with transaction 1

TPS vs number of sub-transaction

nsubx HEAD patched
--------------------
0 441109 439474
8 439045 438103
16 439123 436993
24 436269 434194
32 439707 437429
40 439997 437220
48 439388 437422
56 439409 437210
64 439748 437366
72 92869 434448
80 66577 434100
88 61243 434255
96 57016 434419
104 52132 434917
112 49181 433755
120 46581 434044
128 44067 434268

Perf profiling on HEAD with 80 sub-transactions:
Overhead Symbol
51.26% [.] LWLockAttemptLock
24.59% [.] LWLockRelease
0.36% [.] base_yyparse
0.35% [.] PinBuffer
0.34% [.] AllocSetAlloc
0.33% [.] hash_search_with_hash_value
0.22% [.] LWLockAcquire
0.20% [.] UnpinBuffer
0.15% [.] SimpleLruReadPage_ReadOnly
0.15% [.] _bt_compare

Perf profiling on patched with 80 sub-transactions:
Overhead Symbol
2.64% [.] AllocSetAlloc
2.09% [.] base_yyparse
1.76% [.] hash_search_with_hash_value
1.62% [.] LWLockAttemptLock
1.26% [.] MemoryContextAllocZeroAligned
0.93% [.] _bt_compare
0.92% [.] expression_tree_walker_impl.part.4
0.84% [.] SearchCatCache1
0.79% [.] palloc
0.64% [.] core_yylex

5. Test results with transaction 2

nsubx HEAD patched
--------------------
0 440145 443816
8 438867 443081
16 438634 441786
24 436406 440187
32 439203 442447
40 439819 443574
48 439314 442941
56 439801 443736
64 439074 441970
72 439833 444132
80 148737 439941
88 413714 443343
96 251098 442021
104 70190 443488
112 405507 438866
120 177827 443202
128 399431 441842

From the performance point of view, this patch clearly fixes the
dramatic TPS collapse shown in these tests.

I think these are really promising results. Although the perf result
shows that the bottleneck on the SLRU is no more there with the patch,
I think it would be nice to see the wait event as well.

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

#19Julien Tachoires
julmon@gmail.com
In reply to: Dilip Kumar (#18)
2 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Hi,

Le mar. 1 nov. 2022 à 09:39, Dilip Kumar <dilipbalaut@gmail.com> a écrit :

On Fri, Oct 28, 2022 at 10:55 PM Julien Tachoires <julmon@gmail.com> wrote:

Hi,

Le lun. 26 sept. 2022 à 15:57, Simon Riggs
<simon.riggs@enterprisedb.com> a écrit :

On Fri, 16 Sept 2022 at 13:20, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

Thanks for the review.

v10 attached

v11 attached, corrected for recent commit
14ff44f80c09718d43d853363941457f5468cc03.

Please find below the performance tests results I have produced for this patch.
Attaching some charts and the scripts used to reproduce these tests.

1. Assumption

The number of sub-transaction issued by only one long running
transaction may affect global TPS throughput if the number of
sub-transaction exceeds 64 (sub-overflow)

2. Testing scenario

Based on pgbench, 2 different types of DB activity are applied concurrently:
- 1 long running transaction, including N sub-transactions
- X pgbench clients running read-only workload

Tests are executed with a varying number of sub-transactions: from 0 to 128
Key metric is the TPS rate reported by pgbench runs in read-only mode

Tests are executed against
- HEAD (14a737)
- HEAD (14a737) + 002_minimize_calls_to_SubTransSetParent.v11.patch

3. Long transaction anatomy

Two different long transactions are tested because they don't have the
exact same impact on performance.

Transaction number 1 includes one UPDATE affecting each row of
pgbench_accounts, plus an additional UPDATE affecting only one row but
executed in its own rollbacked sub-transaction:
BEGIN;
SAVEPOINT s1;
SAVEPOINT s2;
-- ...
SAVEPOINT sN - 1;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid > 0;
SAVEPOINT sN;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid = 12345;
ROLLBACK TO SAVEPOINT sN;
-- sleeping until the end of the test
ROLLBACK;

Transaction 2 includes one UPDATE affecting each row of pgbench_accounts:
BEGIN;
SAVEPOINT s1;
SAVEPOINT s2;
-- ...
SAVEPOINT sN;
UPDATE pgbench_accounts SET abalance = abalance + 1 WHERE aid > 0;
-- sleeping until the end of the test
ROLLBACK;

4. Test results with transaction 1

TPS vs number of sub-transaction

nsubx HEAD patched
--------------------
0 441109 439474
8 439045 438103
16 439123 436993
24 436269 434194
32 439707 437429
40 439997 437220
48 439388 437422
56 439409 437210
64 439748 437366
72 92869 434448
80 66577 434100
88 61243 434255
96 57016 434419
104 52132 434917
112 49181 433755
120 46581 434044
128 44067 434268

Perf profiling on HEAD with 80 sub-transactions:
Overhead Symbol
51.26% [.] LWLockAttemptLock
24.59% [.] LWLockRelease
0.36% [.] base_yyparse
0.35% [.] PinBuffer
0.34% [.] AllocSetAlloc
0.33% [.] hash_search_with_hash_value
0.22% [.] LWLockAcquire
0.20% [.] UnpinBuffer
0.15% [.] SimpleLruReadPage_ReadOnly
0.15% [.] _bt_compare

Perf profiling on patched with 80 sub-transactions:
Overhead Symbol
2.64% [.] AllocSetAlloc
2.09% [.] base_yyparse
1.76% [.] hash_search_with_hash_value
1.62% [.] LWLockAttemptLock
1.26% [.] MemoryContextAllocZeroAligned
0.93% [.] _bt_compare
0.92% [.] expression_tree_walker_impl.part.4
0.84% [.] SearchCatCache1
0.79% [.] palloc
0.64% [.] core_yylex

5. Test results with transaction 2

nsubx HEAD patched
--------------------
0 440145 443816
8 438867 443081
16 438634 441786
24 436406 440187
32 439203 442447
40 439819 443574
48 439314 442941
56 439801 443736
64 439074 441970
72 439833 444132
80 148737 439941
88 413714 443343
96 251098 442021
104 70190 443488
112 405507 438866
120 177827 443202
128 399431 441842

From the performance point of view, this patch clearly fixes the
dramatic TPS collapse shown in these tests.

I think these are really promising results. Although the perf result
shows that the bottleneck on the SLRU is no more there with the patch,
I think it would be nice to see the wait event as well.

Please find attached samples returned by the following query when
testing transaction 1 with 80 subxacts:
SELECT wait_event_type, wait_event, locktype, mode, database,
relation, COUNT(*) from pg_stat_activity AS psa JOIN pg_locks AS pl ON
(psa.pid = pl.pid) GROUP BY 1, 2, 3, 4, 5, 6 ORDER BY 7 DESC;

Regards,

--
Julien Tachoires
EDB

Attachments:

head-2-updates-locks.txttext/plain; charset=US-ASCII; name=head-2-updates-locks.txtDownload
patch-2-updates-locks.txttext/plain; charset=US-ASCII; name=patch-2-updates-locks.txtDownload
#20Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Julien Tachoires (#19)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 1 Nov 2022 at 08:55, Julien Tachoires <julmon@gmail.com> wrote:

4. Test results with transaction 1

TPS vs number of sub-transaction

nsubx HEAD patched
--------------------
0 441109 439474
8 439045 438103
16 439123 436993
24 436269 434194
32 439707 437429
40 439997 437220
48 439388 437422
56 439409 437210
64 439748 437366
72 92869 434448
80 66577 434100
88 61243 434255
96 57016 434419
104 52132 434917
112 49181 433755
120 46581 434044
128 44067 434268

Perf profiling on HEAD with 80 sub-transactions:
Overhead Symbol
51.26% [.] LWLockAttemptLock
24.59% [.] LWLockRelease
0.36% [.] base_yyparse
0.35% [.] PinBuffer
0.34% [.] AllocSetAlloc
0.33% [.] hash_search_with_hash_value
0.22% [.] LWLockAcquire
0.20% [.] UnpinBuffer
0.15% [.] SimpleLruReadPage_ReadOnly
0.15% [.] _bt_compare

Perf profiling on patched with 80 sub-transactions:
Overhead Symbol
2.64% [.] AllocSetAlloc
2.09% [.] base_yyparse
1.76% [.] hash_search_with_hash_value
1.62% [.] LWLockAttemptLock
1.26% [.] MemoryContextAllocZeroAligned
0.93% [.] _bt_compare
0.92% [.] expression_tree_walker_impl.part.4
0.84% [.] SearchCatCache1
0.79% [.] palloc
0.64% [.] core_yylex

5. Test results with transaction 2

nsubx HEAD patched
--------------------
0 440145 443816
8 438867 443081
16 438634 441786
24 436406 440187
32 439203 442447
40 439819 443574
48 439314 442941
56 439801 443736
64 439074 441970
72 439833 444132
80 148737 439941
88 413714 443343
96 251098 442021
104 70190 443488
112 405507 438866
120 177827 443202
128 399431 441842

From the performance point of view, this patch clearly fixes the
dramatic TPS collapse shown in these tests.

I think these are really promising results. Although the perf result
shows that the bottleneck on the SLRU is no more there with the patch,
I think it would be nice to see the wait event as well.

Please find attached samples returned by the following query when
testing transaction 1 with 80 subxacts:
SELECT wait_event_type, wait_event, locktype, mode, database,
relation, COUNT(*) from pg_stat_activity AS psa JOIN pg_locks AS pl ON
(psa.pid = pl.pid) GROUP BY 1, 2, 3, 4, 5, 6 ORDER BY 7 DESC;

These results are compelling, thank you.

Setting this to Ready for Committer.

--
Simon Riggs http://www.EnterpriseDB.com/

#21Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Simon Riggs (#20)
1 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Mon, 7 Nov 2022 at 21:14, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

These results are compelling, thank you.

Setting this to Ready for Committer.

New version attached.

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

002_minimize_calls_to_SubTransSetParent.v12.patchapplication/octet-stream; name=002_minimize_calls_to_SubTransSetParent.v12.patchDownload
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 77d9894dab..81c06a6a70 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,18 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not it needs to call
+ * SubTransSetParent for subxid.
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +144,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..140ad78530 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -137,14 +137,8 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
- *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
- * instead of the true topmost parent ID.  This is OK, because in practice
- * we only care about detecting whether the topmost parent is still running
- * or is part of a current snapshot's list of still-running transactions.
- * Therefore, any XID before TransactionXmin is as good as any other.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
@@ -177,7 +171,6 @@ SubTransGetTopmostTransaction(TransactionId xid)
 	return previousXid;
 }
 
-
 /*
  * Initialization of shared memory for SUBTRANS
  */
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 8086b857b9..df918d2652 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -696,8 +696,53 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+		TransactionId topxid = GetTopTransactionId();
+
+		/*
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopmostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *    This occurs only when large number of subxids are requested by
+		 *    app user.
+		 *
+		 * 2. When IsolationIsSerializable() we sometimes need to access topxid.
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * 3. When TransactionIdSetTreeStatus() will use status SUB_COMMITTED,
+		 *    which then requires us to consult subtrans to find parent, which
+		 *    is needed to avoid race condition. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids,
+		 *    depending upon how far apart the subxacts assign subxids.
+		 */
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(topxid, subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
+			 */
+			SubTransSetParent(subxid, topxid);
+		}
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 9e8b6756fe..d364ddf41f 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -262,6 +262,13 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() to avoid need to call
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1310,14 +1317,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
@@ -1441,6 +1448,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1509,6 +1518,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1589,12 +1607,38 @@ TransactionIdIsInProgress(TransactionId xid)
 	Assert(TransactionIdIsValid(topxid));
 	if (!TransactionIdEquals(topxid, xid) &&
 		pg_lfind32(topxid, xids, nxids))
+	{
+		LastCallXidIsInProgressSubXid = xid;
+		LastCallXidIsInProgressParentXid = topxid;
 		return true;
+	}
 
 	cachedXidIsNotInProgress = xid;
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2366,27 +2410,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1043068bac..3e529e1bc2 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -703,6 +705,13 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 		LockRelease(&tag, ShareLock, false);
 
+		/*
+		 * If a transaction has no lock, it might be a top-level transaction,
+		 * in which case the procarray will show it as not in progress.
+		 *
+		 * If a transaction is a subtransaction, then it could have committed
+		 * or aborted, yet the top-level transaction may still be in progress.
+		 */
 		if (!TransactionIdIsInProgress(xid))
 			break;
 
@@ -724,7 +733,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * that would create a race window against the end of recovery.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +774,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +793,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 2524b1c585..b8d4e1d8dc 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1240,8 +1236,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1492,7 +1490,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1506,11 +1504,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2286,6 +2279,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2301,80 +2296,76 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * This patch reorders the operations in XidMVCCSnapshot, so as to reduce
+	 * calls to SubTransGetParent to the absolute minimum needed.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
+		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
+			return true;
+
 		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
+		 * If we have the parent xid, then the xid is not in snapshot
 		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (have_parent)
+			return false;
+	}
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
 
-		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
-			return true;
-	}
-	else
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxip array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU glows white hot.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
 
 		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
+		 * If xid was indeed a subxact, we might now have an xid < xmin,
+		 * so recheck to avoid an array scan.  No point in rechecking
+		 * xmax. If it wasn't a subxact, pxid will be invalid, so this test
+		 * will do the right thing also.
 		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+		if (TransactionIdPrecedes(pxid, snapshot->xmin))
+			return false;
+
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 9761f5374c..8f344dab6f 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
#22Japin Li
japinli@hotmail.com
In reply to: Simon Riggs (#21)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 15 Nov 2022 at 17:34, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

On Mon, 7 Nov 2022 at 21:14, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

These results are compelling, thank you.

Setting this to Ready for Committer.

New version attached.

Take a quick look, I think it should be PGPROC instead of PG_PROC, right?

+		 * 1. When there's no room in PG_PROC, as mentioned above.
+		 *    During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using

--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.

#23Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#21)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Simon Riggs <simon.riggs@enterprisedb.com> writes:

New version attached.

I looked at this patch and I do not see how it can possibly be safe.

The most direct counterexample arises from the fact that
HeapCheckForSerializableConflictOut checks SubTransGetTopmostTransaction
in some cases. You haven't tried to analyze when, but just disabled
the optimization in serializable mode:

+         * 2. When IsolationIsSerializable() we sometimes need to access topxid.
+         *    This occurs only when SERIALIZABLE is requested by app user.
+...
+        if (MyProc->subxidStatus.overflowed ||
+            IsolationIsSerializable() ||

However, what this is checking is whether *our current transaction*
is serializable. If we're not serializable, but other transactions
in the system are, then this fails to store information that they'll
need for correctness. You'd have to have some way of knowing that
no transaction in the system is using serializable mode, and that
none will start to do so while this transaction is still in-doubt.

I fear that's already enough to kill the idea; but there's more.
The subxidStatus.overflowed check quoted above has a similar sort
of myopia: it's checking whether our current transaction has
already suboverflowed. But (a) that doesn't prove it won't suboverflow
later, and (b) the relevant logic in XidInMVCCSnapshot needs to run
SubTransGetTopmostTransaction if *any* proc in the snapshot has
suboverflowed.

Lastly, I don't see what the "transaction on same page" business
has got to do with anything. The comment is certainly failing
to make the case that it's safe to skip filling subtrans when that
is true.

I think we could salvage this small idea:

+             * Insert entries into subtrans for this xid, noting that the entry
+             * points directly to the topxid, not the immediate parent. This is
+             * done for two reasons:
+             * (1) so it is faster in a long chain of subxids, because the
+             * algorithm is then O(1), no matter how many subxids are assigned.

but some work would be needed to update the comments around
SubTransGetParent and SubTransGetTopmostTransaction to explain that
they're no longer reliably different. I think that that is okay for
the existing use-cases, but they'd better be documented. In fact,
couldn't we simplify them down to one function? Given the restriction
that we don't look back in pg_subtrans further than TransactionXmin,
I don't think that updated code would ever need to resolve cases
written by older code. So we could remove the recursive checks
entirely, or at least be confident that they don't recurse more
than once.

regards, tom lane

#24Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Tom Lane (#23)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, 15 Nov 2022 at 21:03, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Simon Riggs <simon.riggs@enterprisedb.com> writes:

New version attached.

I looked at this patch and I do not see how it can possibly be safe.

I grant you it is complex, so please bear with me.

The most direct counterexample arises from the fact that
HeapCheckForSerializableConflictOut checks SubTransGetTopmostTransaction
in some cases. You haven't tried to analyze when, but just disabled
the optimization in serializable mode:

+         * 2. When IsolationIsSerializable() we sometimes need to access topxid.
+         *    This occurs only when SERIALIZABLE is requested by app user.
+...
+        if (MyProc->subxidStatus.overflowed ||
+            IsolationIsSerializable() ||

However, what this is checking is whether *our current transaction*
is serializable. If we're not serializable, but other transactions
in the system are, then this fails to store information that they'll
need for correctness. You'd have to have some way of knowing that
no transaction in the system is using serializable mode, and that
none will start to do so while this transaction is still in-doubt.

Not true.

src/backend/storage/lmgr/README-SSI says this...

* Any transaction which is run at a transaction isolation level
other than SERIALIZABLE will not be affected by SSI. If you want to
enforce business rules through SSI, all transactions should be run at
the SERIALIZABLE transaction isolation level, and that should
probably be set as the default.

If HeapCheckForSerializableConflictOut() cannot find a subxid's parent
then it will not be involved in serialization errors.

So skipping the storage of subxids in subtrans for non-serializable
xacts is valid for both SSI and non-SSI xacts.

Thus the owning transaction can decide to skip the insert into
subtrans if it is not serializable.

I fear that's already enough to kill the idea; but there's more.
The subxidStatus.overflowed check quoted above has a similar sort
of myopia: it's checking whether our current transaction has
already suboverflowed. But (a) that doesn't prove it won't suboverflow
later, and (b) the relevant logic in XidInMVCCSnapshot needs to run
SubTransGetTopmostTransaction if *any* proc in the snapshot has
suboverflowed.

Not the way it is coded now.

First, we search the subxid cache in snapshot->subxip.
Then, and only if the snapshot overflowed (i.e. ANY xact overflowed),
do we check subtrans.

Thus, the owning xact knows that anyone else will find the first 64
xids in the subxid cache, so it need not insert them into subtrans,
even if someone else overflowed. When the owning xact overflows, it
knows it must now insert the subxid into subtrans before the xid is
used anywhere in storage, which the patch does. This allows each
owning xact to decide what to do, independent of the actions of
others.

Lastly, I don't see what the "transaction on same page" business
has got to do with anything. The comment is certainly failing
to make the case that it's safe to skip filling subtrans when that
is true.

That seems strange, I grant you. It's the same logic that is used in
TransactionIdSetTreeStatus(), in reverse. I understand it 'cos I wrote
it.

TRANSACTION_STATUS_SUB_COMMITTED is only ever used if the topxid and
subxid are on different pages. Therefore TransactionIdDidCommit()
won't ever see a value of TRANSACTION_STATUS_SUB_COMMITTED unless they
are on separate pages. So the owning transaction can predict in
advance whether anyone will ever call SubTransGetParent() for one of
its xids. If they might, then we record the values just in case. If
they NEVER will, then we can skip recording them.

And just to be clear, all 3 of the above preconditions must be true
before the owning xact decides to skip writing a subxid to subtrans.

I think we could salvage this small idea:

+             * Insert entries into subtrans for this xid, noting that the entry
+             * points directly to the topxid, not the immediate parent. This is
+             * done for two reasons:
+             * (1) so it is faster in a long chain of subxids, because the
+             * algorithm is then O(1), no matter how many subxids are assigned.

but some work would be needed to update the comments around
SubTransGetParent and SubTransGetTopmostTransaction to explain that
they're no longer reliably different. I think that that is okay for
the existing use-cases, but they'd better be documented. In fact,
couldn't we simplify them down to one function? Given the restriction
that we don't look back in pg_subtrans further than TransactionXmin,
I don't think that updated code would ever need to resolve cases
written by older code. So we could remove the recursive checks
entirely, or at least be confident that they don't recurse more
than once.

Happy to do so, I'd left it that way to soften the blow of the
absorbing the earlier thoughts.

(Since we know all subxids point directly to parent we know we only
ever need to do one lookup).

I know that if there is a flaw in the above logic then you will find it.

Happy to make any comments changes needed to record the above thoughts
more permanently. I tried, but clearly didn't get everything down
clearly.

Thanks for your detailed thoughts.

--
Simon Riggs http://www.EnterpriseDB.com/

#25Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#24)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Simon Riggs <simon.riggs@enterprisedb.com> writes:

On Tue, 15 Nov 2022 at 21:03, Tom Lane <tgl@sss.pgh.pa.us> wrote:

The subxidStatus.overflowed check quoted above has a similar sort
of myopia: it's checking whether our current transaction has
already suboverflowed. But (a) that doesn't prove it won't suboverflow
later, and (b) the relevant logic in XidInMVCCSnapshot needs to run
SubTransGetTopmostTransaction if *any* proc in the snapshot has
suboverflowed.

Not the way it is coded now.

First, we search the subxid cache in snapshot->subxip.
Then, and only if the snapshot overflowed (i.e. ANY xact overflowed),
do we check subtrans.

No, that's not what XidInMVCCSnapshot does. If snapshot->suboverflowed
is set (ie, somebody somewhere/somewhen overflowed), then it does
SubTransGetTopmostTransaction and searches only the xips with the result.
This behavior requires that all live subxids be correctly mapped by
SubTransGetTopmostTransaction, or we'll draw false conclusions.

We could perhaps make it do what you suggest, but that would require
a complete performance analysis to make sure we're not giving up
more than we would gain.

Also, both GetSnapshotData and CopySnapshot assume that the subxips
array is not used if suboverflowed is set, and don't bother
(continuing to) populate it. So we would need code changes and
additional cycles in those areas too.

I'm not sure about your other claims, but I'm pretty sure this one
point is enough to kill the patch.

regards, tom lane

#26Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Tom Lane (#25)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Wed, 16 Nov 2022 at 00:09, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Simon Riggs <simon.riggs@enterprisedb.com> writes:

On Tue, 15 Nov 2022 at 21:03, Tom Lane <tgl@sss.pgh.pa.us> wrote:

The subxidStatus.overflowed check quoted above has a similar sort
of myopia: it's checking whether our current transaction has
already suboverflowed. But (a) that doesn't prove it won't suboverflow
later, and (b) the relevant logic in XidInMVCCSnapshot needs to run
SubTransGetTopmostTransaction if *any* proc in the snapshot has
suboverflowed.

Not the way it is coded now.

First, we search the subxid cache in snapshot->subxip.
Then, and only if the snapshot overflowed (i.e. ANY xact overflowed),
do we check subtrans.

No, that's not what XidInMVCCSnapshot does. If snapshot->suboverflowed
is set (ie, somebody somewhere/somewhen overflowed), then it does
SubTransGetTopmostTransaction and searches only the xips with the result.
This behavior requires that all live subxids be correctly mapped by
SubTransGetTopmostTransaction, or we'll draw false conclusions.

Your comments are correct wrt to the existing coding, but not to the
patch, which is coded as described and does not suffer those issues.

We could perhaps make it do what you suggest,

Already done in the patch since v5.

but that would require
a complete performance analysis to make sure we're not giving up
more than we would gain.

I agree that a full performance analysis is sensible and an objective
analysis has been performed by Julien Tachoires. This is described
here, along with other explanations:
https://docs.google.com/presentation/d/1A7Ar8_LM5EdC2OHL_j3U9J-QwjMiGw9mmXeBLJOmFlg/edit?usp=sharing

It is important to understand the context here: there is already a
well documented LOSS of performance with the current coding. The patch
alleviates that, and I have not been able to find a performance case
where there is any negative impact.

Further tests welcome.

Also, both GetSnapshotData and CopySnapshot assume that the subxips
array is not used if suboverflowed is set, and don't bother
(continuing to) populate it. So we would need code changes and
additional cycles in those areas too.

Already done in the patch since v5.

Any additional cycles apply only to the case of snapshot overflow,
which currently performs very badly.

I'm not sure about your other claims, but I'm pretty sure this one
point is enough to kill the patch.

Then please look again because there are misunderstandings above.

--
Simon Riggs http://www.EnterpriseDB.com/

#27Dilip Kumar
dilipbalaut@gmail.com
In reply to: Simon Riggs (#26)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Wed, Nov 16, 2022 at 8:41 AM Simon Riggs
<simon.riggs@enterprisedb.com> wrote:

No, that's not what XidInMVCCSnapshot does. If snapshot->suboverflowed
is set (ie, somebody somewhere/somewhen overflowed), then it does
SubTransGetTopmostTransaction and searches only the xips with the result.
This behavior requires that all live subxids be correctly mapped by
SubTransGetTopmostTransaction, or we'll draw false conclusions.

Your comments are correct wrt to the existing coding, but not to the
patch, which is coded as described and does not suffer those issues.

This will work because of these two changes in patch 1) even though
the snapshot is marked "overflow" we will include all the
subtransactions information in snapshot->subxip. 2) As Simon mentioned
in XidInMVCCSnapshot(), first, we search the subxip cache in
snapshot->subxip, and only if it is not found in that we will look
into the SLRU. So now because of 1) we will always find any
concurrent subtransaction in "snapshot->subxip".

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

#28Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#26)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Simon Riggs <simon.riggs@enterprisedb.com> writes:

On Wed, 16 Nov 2022 at 00:09, Tom Lane <tgl@sss.pgh.pa.us> wrote:

No, that's not what XidInMVCCSnapshot does. If snapshot->suboverflowed
is set (ie, somebody somewhere/somewhen overflowed), then it does
SubTransGetTopmostTransaction and searches only the xips with the result.
This behavior requires that all live subxids be correctly mapped by
SubTransGetTopmostTransaction, or we'll draw false conclusions.

Your comments are correct wrt to the existing coding, but not to the
patch, which is coded as described and does not suffer those issues.

Ah, OK.

Still ... I really do not like this patch. It introduces a number of
extremely fragile assumptions, and I think those would come back to
bite us someday, even if they hold now which I'm still unsure about.
It doesn't help that you've chosen to document them only at the place
making them and not at the place(s) likely to break them.

Also, to be blunt, this is not Ready For Committer. It's more WIP,
because even if the code is okay there are comments all over the system
that you've invalidated. (At the very least, the file header comments
in subtrans.c and the comments in struct SnapshotData need work; I've
not looked hard but I'm sure there are more places with comments
bearing on these data structures.)

Perhaps it would be a good idea to split up the patch. The business
about making pg_subtrans flat rather than a tree seems like a good
idea in any event, although as I said it doesn't seem like we've got
a fleshed-out version of that here. We could push forward on getting
that done and then separately consider the rest of it.

regards, tom lane

#29Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Tom Lane (#28)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Wed, 16 Nov 2022 at 15:44, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Simon Riggs <simon.riggs@enterprisedb.com> writes:

On Wed, 16 Nov 2022 at 00:09, Tom Lane <tgl@sss.pgh.pa.us> wrote:

No, that's not what XidInMVCCSnapshot does. If snapshot->suboverflowed
is set (ie, somebody somewhere/somewhen overflowed), then it does
SubTransGetTopmostTransaction and searches only the xips with the result.
This behavior requires that all live subxids be correctly mapped by
SubTransGetTopmostTransaction, or we'll draw false conclusions.

Your comments are correct wrt to the existing coding, but not to the
patch, which is coded as described and does not suffer those issues.

Ah, OK.

Still ... I really do not like this patch. It introduces a number of
extremely fragile assumptions, and I think those would come back to
bite us someday, even if they hold now which I'm still unsure about.

Completely understand. It took me months to think this through.

It doesn't help that you've chosen to document them only at the place
making them and not at the place(s) likely to break them.

Yes, apologies for that, I focused on the holistic explanation in the slides.

Also, to be blunt, this is not Ready For Committer. It's more WIP,
because even if the code is okay there are comments all over the system
that you've invalidated. (At the very least, the file header comments
in subtrans.c and the comments in struct SnapshotData need work; I've
not looked hard but I'm sure there are more places with comments
bearing on these data structures.)

New version with greatly improved comments coming very soon.

Perhaps it would be a good idea to split up the patch. The business
about making pg_subtrans flat rather than a tree seems like a good
idea in any event, although as I said it doesn't seem like we've got
a fleshed-out version of that here. We could push forward on getting
that done and then separately consider the rest of it.

Yes, I thought you might ask that so, after some thought, have found a
clean way to do that and have split this into two parts.

Julien has agreed to do further perf tests and is working on that now.

I will post new versions soon, earliest tomorrow.

--
Simon Riggs http://www.EnterpriseDB.com/

#30Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Simon Riggs (#29)
3 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Thu, 17 Nov 2022 at 17:04, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

New version with greatly improved comments coming very soon.

Perhaps it would be a good idea to split up the patch. The business
about making pg_subtrans flat rather than a tree seems like a good
idea in any event, although as I said it doesn't seem like we've got
a fleshed-out version of that here. We could push forward on getting
that done and then separately consider the rest of it.

Yes, I thought you might ask that so, after some thought, have found a
clean way to do that and have split this into two parts.

Attached.

002 includes many comment revisions, as well as flattening the loops
in SubTransGetTopmostTransaction and TransactionIdDidCommit/Abort
003 includes the idea to not-always do SubTransSetParent()

Julien has agreed to do further perf tests and is working on that now.

I will post new versions soon, earliest tomorrow.

Julien's results show that 002 patch on its own is probably all we
need, but I'm posting 003 also in case that situation changes based on
other later results with different test cases.

Detailed numbers shown here, plus graph derived from them - thanks Julien!

nsubxacts HEAD (3d0c95) patched 002-v13 patched 002+003-v13
0 434161 436778 437287
8 432619 434718 435381
16 432856 434710 435092
24 429954 431835 431974
32 434643 436134 436793
40 433939 436121 435622
48 434503 434368 435662
56 432965 434229 436182
64 433672 433951 436192
72 93555 431626 433551
80 66642 431421 434305
88 61349 432776 433664
96 55892 432306 434212
104 52270 432571 434133
112 49166 433655 434754
120 46477 432817 434104
128 43226 432258 432611
(yes, the last line shows x10 performance patched, that is not a typo)

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

subtrans-head-vs-patched-v13.pngimage/png; name=subtrans-head-vs-patched-v13.pngDownload
�PNG


IHDRV~c��<?iCCPICC ProfileH��WXS��[RIB	D@J�M���Z����J���b/�
�],`CWE] vD�-��/��(��.v�M
���|o�o����3�9s���w�>���rQ��������46�	�3�4@��e���hK����&@��5g��?��k��� qg�y���������
��0@�*q�W(q��S�$�s!n�L���Y0�@�](����]�B�m6��yy��Clmd+�}2�����f��&��5��sQr�$_��������\E�[Xibyd�r�0o�s&F)1
�niFL,�z��U��T�"2Im����0g�����	�����h
��)	�AW:ER�K���������f��x�/�6S��h�s|�����CENG��Z,�i�1F�81b*���������$Dil���1�6rE�2~k��E���>V�)���������,��b4x�81R��I�W���]I9I�:�����s�B��s����I	�����x�X�*��������%o	�G~a�f,�\�Z���%������#�����@4��P�
X3�D�
$-�u��N��@��8k��)�)�&�"�D"�?0.D�+���2���� S�[���@��@.�W�FI�%������;V�7Ve�����o2�F�����oI#�#��D����hx
����}��������JxD�Ah#�� �+�!���
��kr��}.p[�����P*�,�8����=!�����
�����������RP� J0����G����2���Gk�@��=?��~�}!l�~��b�f�v;��6v��.a��x`u=V��~o��xr�������2�����]���}�)�w4�N�M�K��l�"��<��e������E��z�R}7��o��G\���;����`�x����qv�����=��P����%��N3��/+`����?a`�� �����:���`:��A)XV��`�
v�=`?�G�)p\W�
p��N������ $��0#��A�w�	D��h$IE��,D�(���<�Y��G� U���a�riE� �H���b(
�GMQ[t(��r�(4�f���"t>�]�V���Z�z����/�^`Z���1���biX&&�fb%XV��`
�9_���n�N��8w�+8O��$|&�_���k�&�����_	t�	���G�F��	��2�v�!���:	o�D"�hG��{1��M�F\L�@�K<Il%v{I$���@�%�I�b�:�n�	�UR'�=Y�lNv'����R�\ry�8�*�)�E�bC���R������m��eJ'�U�jG
�&R��s�k�5�3���7ZZZ�Z�Z��$Z���j��:������Gs�qici
���I��:�nK����K�U������&���c���Z�U�Km���6G{�v�v������:[�_g�N��a�[:��L]7�X�<����t��>�#�����	���m�;�����VL.S�����<���'�������K�������x$L1(78f���X�,+�����u��q�� � ��E�j]��p�a�����p��
��Fl�0���FuF�qcG�Q���7�1��?��`p�������&�&�&�L��\2�553�0���3=m�m�26�6[ev����ih.1_e~��9���a������=&�
�--�,�,�,�Z��|`E�����Ze�h�cmn=�z�u��]�����f�M��;[;���u����xvEv�v����A���+��;|r68\qD=������P'/'����!�!�C�C*��r�9s�����]X.�.s]�\^��6t����_]=]s]���s�s�6�������������0���a���{���!���q���9�s�g��/o/�W�W���w�w��-}�8��>�|	�!��|��~���+���������.�g�����o�`����L��d��zl,����������q
��
y�������B#BKB[�������=��
������q2��<���'�U�zFx��1�)���>�Q�c�<�a$:r���#����Hc�bA,/ve��8��IqGFG��*�$�-~z|s3aB�����!�K�%�')�����&W%�K	MY��6z���/��JR��Hi�i��z���Y=�s�����7����2��x�����M����p �����+�3?�_����eTd���5��`�*a�(@�B�43 sE������Y]� q��[�����������.'6gGN_nJ��<r^z�a��4G�4�l����2'Y��m�����z�Q���H����}�#Ia��I�^XX^�~r��St�H�\��8u���E�E�L��	�5N��>gz���-3��3gY��?�sv���s�sr��6�u����K��0�t���?E�T]�(��Z��`�B|�da��a��-�Z",�P�ZZV�y�`����~^�s���%-K��n\F\&]vsy���+tW��X9re�*���U����|�G��5�5�5mk�����^�l�����7�C��V�T,�x�A������5�L7�n��Y�����-����e[�[�>������_��o/��e�tG����MU�UU�Lv-�F��]�����'tO}�s��������>������zs���>j��8�<TR��N���������q�������#;�Z-?fpl�q�����N��=);�}*�TG���{�G���4���L��sg���n�4�8p��y���/�\���u�����C�y�v���������+�WZ���t����kg���_�s��f������j�-���N��Ww�~�7�>�~��eMV�����6��c����%<��!�x�8�����O�O���?�z���hWx���c�w�����]���/�_�3��K=�{:_�_��^������<�j���}�6���w%���������c����&&}^���K���������d|9_�+���ff�z�T��|F�>��
�>���OX}FT/j`�����`�����2�/|b0@�
��g5��RY���9T�����P�g�����JU�c�/��|13{�p�eXIfMM*>F(�iN����x�V�~ASCIIScreenshotdC�i	pHYs%%IR$��iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>1150</exif:PixelYDimension>
         <exif:PixelXDimension>1878</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
m���iDOT?(??�o���@IDATx��	�,Uy(�3�rD1.��[��$F�\��'(���n�3q�5Q�^�{���I�"��\��F}�A}nQQA7Pd���w�OQ��==g�,=3��1���Nm�:�UQ_�����% @� @� @�L��X�hc @� @� @������@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@� @� @� @����:@� @� @� @��)�S��&@����?��?��.�(����j��_��%����?}���O��+��~��~�+�����N��~z�}Z��{�����pb���>;����,��r��������X6F����Mg�q��2;v�H����������}�k/*�:��_�rz����n{���G<�&�����>����o��:(���H���uS�Gk��w�#���?OGyd��Mn�h����g���x�����.���e]�:�Y���|8 ���/|!}��_M{��W�;���J��i�:��t�i���
��U��9�������l�����;��N��|`WF��
���{����_����7�
����;��
��SO=5}��.���<�i=Vr����c+�!v���4���7N���������_��_%�|���8���n���w�%�[�����'R�����\2��y���������o��7��q����k����&���z\+�5Ctq����FuQ_�<��8��t���w�g>��r��7������|�%g��c=����>�".���?,��q����[ry+�^1l��rc�j^��d�� 0I@bu��� @��u������qz�3���R�;���������ve�?��t��'w������}ob�7�����O~r7�����W���������Ozd����������O�dl�rq��C���]�r���/})��}�[0����-���s�]0a��}����"�����o�f��Oy�S�������]�J�g�F�I�����&j����=�q��������$IFg��W��$�G���?���M~������z�1��DS���?�_T��	D�����/|a���n����:[��?��?�;���+��jL��#��2������Vr�Er4bl����]���Mo{��R$JG��������?\��~�������~��FG����}�k����,��"?���_��1�k^��t�;�9zu3*�����*��G?������?�'��~�+�O;��x!��0�V\W�����t����/��/�+_��E��{������h��c=~���'=���bt~�c�8�W��au���f1,7���5]��I�X
���P4 @���vbu9	�8 �t�I�:Z�}�+_��?���_�Ec?��_�\P�?��O�yE�����h�j�0�/~���������N8��	���??����"yr��'��Z]�)=���������7?���R�Ctq������R�l[i�O8�<�=��t���d�~������>PZ.��	�~��?����1,�F�Z5Z���;w��E}��@$��NF�l�&VWr��1��k��i��]%�GD<�c�v?���R5�h!-��<����k��w�{lR��_���3w����>b�����.��n[�'�3�������>���j��y��@����������`t��ce3&V�i
QO��-E�;��S�S)b�]�z��w�w��u+9����o,��D\���	����8�����{���.�-k�=����k��l�,��������[��2 @`�@��� @`��v�����~�������]����XP6?������W���_�b�W���������f>?�p��b}�|�����?��|nu��7'(�s�c\���������
��\nu9���e�-oy��������:��&����/��V��U���/yW��K.����������]���G>�-��xE����;>�����������s���o����q��s��=u�s������^x��ib���by����q���@������$Y����������+��jL�}��,g~+=�������D���V��"�;f���w/}�K�u���w�/j��?���Z��X���8V�o���-s�u�����)?�����6b�n6����'k����'�+����e]F��I�������\��y�v�7��������J����2�8�rk���?����_A�`\��y��7�[X������g��8���V�t���� @�����Ld @����7�g%���g>��H������'?��T��������u����n~}�C��e}��+e��.���{N�y����_0.���?e|$)���r����'V�c�e�n�f�\�G��#xQ�%�o���h�[.v������k�K�Ec7|9=o�����4n1Z���Y������Dr$]F��.�����"�F�Vke�h��"���-�������Ey������X�oo~�����'�rk�E�
�x��>�������z��z�[k.`���s��k����=�#	Z������j�gGQ&��]0�����s��n�bX�b��@k[�k�I��p @��J$VW�f @��*
��z��X���UT~��|~�i�z2�q�V/7�3���m>��3&��?"n~����������h�������7G�z�6�Mv�������+�Zq���h���o��q�O���21�q�R��?������4�����b��O|bi-��5�/Z���.#�OJr�t1>Z�.�W]����������u����eM��|i���'<�	�������u)Z8�[P����F��hm����z��"�����dM�E�8�b������[n���p��\$cb����8>�%���"�I���9��h-�'u�����x�#�X����X��Z�&M�^����/�;�����d�������<7��.�mR���#�HzO�"F�>�$������Fwej��~�!�{~D{�=������-�Z6�c���������}|�wb�EB=\#�W��h������u��ZE����rG��:�Z7��(�����q1��D���'����/�F<q���'V�\��_���cq�]~�?��O���?�!b]<	bRu8�\Q��a{X�ADk���t��M��z^�m����c=��H���b�qmV���u�a�M��W[�8�^1lO��&��	 @��-��c�l  �^��s��~1�f���������=��j�c��7�i�����X�g��x����}o:��#R�_5?�����?�=��E���X=���R���h|@��b�fu���~����z�����-2�{�S1������?������lA�����{���[0,��;Y��	�����xwitz��RNf�_��_O9!U������~���2��M���}����I�q�������W�z��O��S�
��o���[	��u��������z��?�S��?����9�S�3��+V7���SN��������h���_�'7��u�e���^��t���f���	�I�\�j{4�~]����}�����������o78�ZJy�C�:�����g�	�2������[�U�R��^~��e�x�_��o\�������qQ�����������DI�x�3���\7*?�:}����~O�8���������_���9������b9!���g��$�?�G���e{c������w�����^{-9�������(����l�����������J����\FG�����w�s�?����w����~�?�I9W��|�!����O;v��9�����}!�9kw�������\�z��/(��8f�#��Q?��)�>'�S����a�_���^������#�������r�~�W����]�������?��1�������8����a���&�����r~{�c�`X�R��~����}V�����N��|��L9�\�G<��[�c=��Kw��]��]#���?���u���L)�e]N���;����31l�q`b��k�Qo�	 @�k% ��V��K�l��#^qV�����l=^����������7#)�[i,9���I���7CkW�bqs1n�N�r��t��\fQ����~)n�F�(�v)�������\|�DO$|F���j���mtq�:��utv����.�MozSZN�6nz��s%I	�H�M�H����"y	���m$�"����J�������q�:�t����Hp���ej�7��I�H>�����H�����nwK���^��Wu7�s���k��:����#�,	��~�	���HO$�fx$��u���m
��*���Wn��������~c�w��^����
�h���E�(
��jIf����@t�w\���J�s�;��Gr+�s���[]�c.�5��[��_����}��G:�yD=�}�����o�����~b5f1�q�{\I��|���^�1]~�`���'b�Q�ov����.E����~�%�q�D��m���[��H���bx���X]���?�����'-������X��n��[��U_*�R��~��o�vI���)�p���g$go}�[���a���j����	�Rh�?�_s���P����g�9��O������G����&V���\�[S�HR�V�%������s��r��������)~�t�����d��K�����Bt�e9�j��r�]���O�Uz�-�K�=���E/*?Z�z�)~�]=�����qM�o��IQ������X�k"��8��q�����N]��(���X�.��[y�a����]Nb5��L���u��"Q�������tW�GN���z�G]�s���U)���q���F������{M7v�H�X#��5�5[ @`�6[b�El�FhM�.w��<��c������Q������g�@��:��SR$��{W%�����$&��mKB(�7o������L������7����E����HrE��vq�:J��k�-�"�]?�Zo*����y=��������}qC����
�N�akR*Z%��v-q���g�N8�-����dU�"�������h��H�E�����\����t�k]�~�>��k�����z����n�%V�����o]�Z�&��1?"�$�	�H�����]����&�@�>���nW��G�v-�Z�W$�k���?�^�C��EK�HE�_~�H��xG�[�,��_��:I��@Q�b�����n���I$yj�$&�'�����g���J���e�}�k�l^�����?���R�,�-kk���K}F"+�3���y--e����o��q?|�����X��cy�Q]����l���.����Q���D?��sgi�Z�mq:i�~����G��"����M��z�_�d���-?�����X�8?&�{���$�1�.?�����q�?H������.������@1}<�!���F��M�e��>���T�I�����t���#��^�8�"D��c�u{�z�C���o��w��"�����G�w	�H�p�uT���syt�V+lD�_�����5]�� �^��%m9 @���l��j$%��jK��H���%/����������t�nU"I���%eW�X��=��g�.Z�]���,E����6E���H �
��]$p��
K��/����w�c�OR���~��~b5nNG����5	-["����7jG�q�8�{�S��qC;nb��Wv��b��7�����2�nS�+��_�fz�w$Q���W������I������
)ZRF��X���6[b5���cu�dG����U
��*-�����N�����������+Z@��j�n�dD����n~���Aq=ZWFW0��G?�k�]F��'}�1U�M���k^�/^��-��	�E�Vr��1���H���"�Dr��7�a9����a�]������.�?b�r�~�(����q�Fk�H��{�l�Q��[N��p�d��x�����J8Z�GL?���������X��8�g�?`�G�FW�����|�Zkk�R`�O���j2}Rb���gR=�=E�/~���������;���<\|��r�~@q���N�sc�G�=�;�M\�xbyQ�Em��I-L���'��:���g��nq�[�A7"~�v����`5���������k����ER9�����[$oT[�8�1l9�t��� @�VS@bu55���)���X�$D��p�.)��I��x<h}7�R���[��J$[��E�R�'�����BmA	�����Z��v�����w�e[<J�>��O������	OxB��(�7D��h$�����z��X���s�#|GW�&����w��k�F]N�����6nf�M��y�p����E����a��w����o/_#IW[���1m��5�h��7��l��~b��V���d|��HhG����_��XNb��~�s��^]�/��k��j�dQ�fz$(ot����g���-�kb��� �����_�����X��-�_}<�R�_MG���X��G�������/~����ij���,�������H�D\�.Ljb�N������P��_�?��w��pt�\��KM�V�6Sb��������&#�	�HBF=�X������O?~LJ��GV/U����o���kB���G�������[�Grv��@1mlK}�t�� Z�����'��=���S���I��-���9f��!P��=~��Z�z��*��~���EK������Vtq��������e#cXY����8�b��k��m>	 @��% ��^��C����vL��G�b��a����L;��z�0nn�M���hU���n9��~K������?:.nF"2���xb$Ec�����4��>���X}�����k���7��;��c|�#T'����	��]���7�#A-Rc;�J��w\���2�}��m-�^�7[buRb�&��	�H�>��OO�X����
��qP[����������m\b��o����������s���A���$�h�,�$��4+9���R������q?��G�3�A�E7�U^�#�P�������y��Dt������jU[g�����:�?��?��J��xl�Fv�)�:��u����w�i	�$�8��$V��{<��O��O�����?��X�-R���%V#9���<�_l��H�������.�w��������Y�a���W����c-�����u��8�c��G��97��q��������������P�G�@�������]��m�I�X/����� @`�$V�O^�31E}����p�������mI����8�uK�g�qF�~�q��Z6q#t\���<��K��{��o~swczRb�nS?�	�h�4)I��p}7\m������u�dm����`�w���o�`�����q�-�o�SoD���}7����Fv�-�z�i�-z�o��zT�z������5II�h�@����8ZKG��!���jk�����X�/;\��\Vr�?Q�#aX�#O}�S�wC��G���������_��������v�����K��p��~���Oc��E��{��^������b<�x�y��9bE<R5�|����$m����}�n����F�a����_|F�z�g?����]Pp��l��j<7�;��c��	"9O�����q���a�����;~����?��*���~���I-V�Sj,)�����X���q����c;�:MZL���������}Y[��`2i�1�����e���q^�.~���=9��q�q.�W"D-����^�2b�?�M��wk�q}1K1���n�n1� �v�RG����O��}�������.^�|Cp>����gO�_~l_){�{�cA����2<�s���|���+��:���'�	���(e�#h�������>1}��R]N�v������yN�r���&'D�����i���[���%�����h��������M��M7>'U���m��7���9�SF��u������v��w�|N���w����q����|n�8���8Z|�o�[�������os���u��t\4M��G,c���{��3'FG���o��C��z��^��s���=�����YN.�_��Z��M�2>������G>�h��B����-���9IR/����_�F{7��4��S{���z���epXo����Q�������e>��JNPu�7��a+9���z���.�$��a4��DM7.b��ckt�����e���|��=����rK����G���]~�u�]6������_������c�b��q]~�jg��[���bN>��;�Y4Y~$s7����n|��zvsO=��|?���G�Kr>�y?>�;_���rrk�2�O|���I�=�(`>?x>?�>����?�4�q��Vm>�������;~t`��z���Q��e���X�-c�m�I�����:�e}F���,�Xk�4���:�e[�5�Dp# @�k$��h�fK��p�SN�`�S��v�_�{U��������������`nA��6��B���]�zy��j���7Kc�c���jB7�?���v�	�������������$��5L7��X]*	3��7���staZ����V����$f������{n��/Z��� ��)����c����FB �D2g\��:����qE�u�9_����>��5��������������w�v����e|�D?!��0?����_�#YS�O$Pj�Z��%��I��X�eE���G����'�j��/~q��q����B��g�w9�J��8s+���y�c-����	�(t���w��|���.�v���6�yG'�?b�r�i�/B��D�h��X?��2�b��4k���}`~-�Vc�kb5��� "�>���n�_����rk������a�i�y$����~]���-��t[b�����-?.��������Z���M�:��|�=��2]��Xv����M���������H��3��~<��]�������<.��eO�\nb�o1�C����k��l�Z����a���?V�q�tu�O @��z	H����� @�&���5�7�X\[^Nj�������������t��fl�<Y����u}�Fj�jb5�e�
�h)7|k���>��
��v���e��n��}��]K���7�j��HR��J,7n����������&rc\?��F���-E������M~\h^�E+�:M~�Z7���.+�C-��(�3?"�+�o���g<����e�t�n�\�7kc\,s\I�q�_7] ,�Y|F���E��u>�mm���'?����8��������_$fk�O�G�%1M����cy��������j�ee~�^i���#[����J$#�A��Ef��Q��41�r���/��������v��Y���>�=������k��a����S�������b=j�>����:12����z�;�Y��g�@?�����
oxCWW��d�����1�o�->�;��ib?����1"��87�t�x���u�h������&����&@���=��1��#��Iq�G��;��@j�O�E��N�5>�v�;��y�?#^��`��k���g�|�o����q<�sp�_�����~_��g���b6�j��oO��b�Z����a+����'@����w���S��� �,��^���\n�r�l�i�;���o�.z�����N>��%���W�:]�Z�Jw����xwbN��[���C��7S����GrQ�1�s��������$�Daz��WF�G*v��e����a���|�4�{�j����)���_S��4����9��t��].��@]����c5��{�M��N�������-�L��GuT��}��'��.��/F�����]�����=��$O������b\,#?��+�x�������o�����y�;�=����1��Mz_]�����G����1����OQ:�/s��t�(��x���Xf�[�����n���.\�JW*�	��Q�nD��_Q_�q�k������Hq���������b?����3'=K\��#�r���Qe}��������;�k����^�#�8�I�����7n�(��D�4K�����I�t����{GtG��u�.��z�X����p�;,����srf��i_�1�ot�.�Es���I�O�1]n�V�������������x�mN�G�n/x�R�����������lT��977W����0�M�P��+�Wt+r������5����?b���|��_���{�Q.'���r����b?��l�A����w���s�����z��8n��c�sb>|��1�t���G�����^�Z&'I������>�S1�������:�{�sr�=��zN��s���,�e�qj�Y���u�b�k�2����n)s� @��.���[�'@�XZ ZI�_me�T���%Z���hAV����ha�o}2���?�~�5ML]�E����5H���G�E��i�b��������nu���h)2��"�%��P�u���x<h��
����x@��W�b���Zp�6�{����4f����//Z��[���} ����x���z�_-�������?M<�3o<�����1M�������>W�8.�-�bx������5V�>>��Dk���)�[��V��e������s�:�[���D]��1b�����Q�'��h�9:M�x���]�R�Wr�EK�'<�	���m��/-���1��[��>��?�i����<��q�t��_�>Z���t�������k���x�m}d5��h�>��h�-X���?bm<� Z6��9Zp���C�.&�4����������������k�o�][-�q���j}�E���������rF��t�z>�=:M�����,[�X���`�?�����O|��������[�J��u����q`�c�J���v�$@��������6C @�����,-A��������L\D~\ai-�c������8A��������uRL��.Z�}��_--����r�-O�Ul�q]Z�t�A�o��M�&li������|��lO�<�VN�w�.'q�����r�������������q-��d�.����bxR-P��q��rW������;'_0<'5RN*�+^����jK�Z0��/��ziy�����u�V�b{��y��[N�\����������=�������^&'�R~$si�x�k^�����u����-V���?���������-38��������NKq����8��Ek��w�8��sR�Q@�c0��r�
Wr��|C*��\�s��/���;��T���sq���7XVK����~���x�p�a��m�6�f8��+�m�8��k�iu�x @���
H�����	 @��E �I7������=�p]Vb�.$��[/��:�<r�n��o�����/�	�p������� @� @`�$V7���	 @�Z�#�s�����Y�	�:���������[���]�z�����0�
H�V	����������� @�@���j��� @�*�T<���S<n�������Z���D?�����'��N:���\�D����*�����
X��ua� @��B@buS�&+I� P�����?���a{Xz�3�Y�\���?�����c�=6���/]���$��rJz���_���!���~�����oy�[��'���}�k�H�� @�����w��r @���8����#k��g�M�
���_|q������{��v��9�d @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+���'� @� @� @�3+ �:���� @� @� @� 0+[6���/~1]x���w����8����?����SN9%���?M7�����G�:���e��SO=5}��O��vZ:����o��o��^��u�����>;�|������f���P������v��1�|�^�W��� @� @� @��v�����/�8E�tZ7??���Yg������w�����������!y���1�'?����/|��qQ�o��o�^{��h�[���t�	'�s�9g��[���}�{_����`x|Y��[�p @� @� @�lc�-�X��W��nx�N����j$c�x�;���e����.����vz���������a�|�+�#���}�������g�a������-J?����a����������|�H��;�S�]�jWKw�����g�����w�a��5Z�r�!�t��~�B� @� @� @� P�db��o{:����F�r���^��w���8��nx����u��~pw�������>���N*��8����~��q����_�����|`z�k^��N}���������q���'��nu���{�����dm<��C�P�@��?X��Q0Z�����y�&�Y����� @� @� @��N`K&V���������H������l��K���6�I�����Q����-(���~7]��(�^����=�A�?Z�F���������\�*�?�������u������x�7���e\$Ro����H���^�*���?��?N�~��S�d�����������I� @� @� @���[2�z�;�9����-�����N�~��_��\�2���^���g�g�&���nW����w�F	�H�����^z�{��h��<�9���|f~�E�$im��e��_��'�|r:��c����u=����O @� @� @�.����<0�s�9)���zhy��O~��t��8E��[����
������uk�D��G�`||y���T����G777W>���3���������~w��]�Z���w���{����]�zW��mo�>���������>;|������]��[�B @� @� @� ��\b5���]�{�c���/��{Wj��������nz��.�<�y���.���t��Xk@IDAT��^�����_����G=�������?��:��2���hI��G�����~:����K��5��]�n}�S���s����C� @� @� @���-�X�����yk�Y����{n������5�=��O�z��J�w������J�O���+��^�����=�aeP��=������t����o~s��}��/^��������F��������TZ�~��_^���	k��H�Fru=�ot]|'@� @� @� @ ?�v>w[	�����J�2����~u:�������\����}���[����_��_���}�2��?�a����MS{"){�����?��OS���*W�J���w��K�������|']���,�N:���X��_��)�f_����q��Db���O/�z�w�������� @� @� @�l��j��xT�Yg�56A���}-��7(�������SO=�K��+H�n}�#YER��K.���7��K��������8��2����>
�!yHz�k_�/�����~�J,������2J)B� @� @� @`mny�[�����\����]�:�I�������[Z�~�K_J7��M��������o~�E��G�>�iO+�k#��}��^���G/�&��z������g>�b���>�Io{����w�FRx��]e�����O��O�z�����0��#�L�:XG� @� @� @`�$V�h����z���?��v�����K������h�z���~������Ht^���N���7�����)����g=+=���\4������j�8������v�T�s�QG�����X4��~��t����������~�Vh��H�F	cL������>}m� @���������!�% n����6����9��� 0[��`l�����>����_��_K'�x��Z���k����'>���/xA��{w��sg���<%E���������z��XF����L�z����>��O�N���������%Qz��g���^�h�]�����.�����������+_�]������u��zL��X�&d<
��X���	�����'@��Bqs��o�& nN2������K��{P�}��}�{�KW��U[:����}���Fw�I'�������q�{\z�K_Z�������Dk����Fox�����i"q���&A����\PZ��s�9��|`�����2*�}��^����<�A������������w���\�^��`e��"���Q#��c�AXB@�\�(�7��D��%��%p�"@��qs���������G]�����mz�[��%W���w�<�)��������?��.q��o|���	�?������.��������vy4p��5����|'����e��>�k]�Z���OO7���R<F��W�r:������w���5
�r�)��#�(��?�����������[���)�����0=��O.�������n��\�n�K�H�.�c����b�7��1�c��1( @`	qs	� 0F@��l��jl���������=����$@cX�'5����~W[��a����P�������w�w����to|���Ozz�s����k_�Zy|p$x�;�����g��~�����sLz�{����g�����^�W������R:� @`����&� @`)qs)� �X@�\lb�7��1�������L��;S�����w��de�����xE:������1.Z���g�����^��t�;�iA��%�����V������}�s�c���Ul����h���~�?8=���N�{����.w�����Z���I���d'@��x�]%@��$qs���/ n�w1����I2� @`���9p����������R��SOMW���u�{��N��F?c��&��z�a����;w�[�=���5����^T�7���E����TZ�FK�I	��$�����~����%V��	 0]���t#% �7��	 0]@��n���f_C?����-�X�^
�X����J�LG��vp��]���&@`���J�LG��v7������T@�\�������`�K�n�#`�[buMN���p���v�
&@`��=49�N@��v�� �������m' nv������������h.l�g_�RVG@�\Gs!@`����g_�RVG@�\Gs!@`����}-��}���n����r��@���6��6��U7W������6��6��U7W������`'K�n����(����I��Vp�����m#@`-���P5O��������m#@`-���P5O����9���[�����I��!�Y �%\xl��j�XCqs
q���-) nn��j�XCqs
q���-) nv������k�Q�kol	l-[k��^@�\{cK @`k	��[k��^@�\{cK @`k	����)������m����Q[[D�����6��u7�����"����6��u7�����"��`GJ�n�
���!�����G��fp������'@`�����<6��������'@`�����<6���9�����&o��K�n�� �i\xl�]g�	� qs��-��M+ nn�]g�	� qs��-��M+ nv����������o�l>�o�Yc6V@��XK'@`�	���o�Yc6V@��XK'@`�	���}&�����L����L�+A��&p���v�U%@`&����
V��M$ nn��eU	�	qs&v�� @`	����%���*�,����,�
�B��fp����u$@`���Y�����  nn��d	�%qs���u!@`3����$��j�������D��L�����c��Aqsw�U"@`�����=V��7gp�X%fZ@���������r���o��)��c6���"@`v����7����7gs�X+fW@���}c��Mqs�_$Vg�~��ZI���.�������!V���7g~YAfL@���bu�yqs�w�$@`�����X����YVGbu��)�I�������=a=�,��f�S���Y7geOX6����Y���$@`V�����X�����Cbu��0�K�������]`�d��&�aV��
77|X6�����v��%@`����.�X����9W@bus�7kM���	���8{K&@`s
���s�Yk6N@��8{K&@`s
���s�Yk6N@��K�n\��K�X����� �.<6�"	������}V��
77�"	������}V��
7��P���"%V��^�
�������,�������m @`=�����,�������m @`=������z��-�,��-�3m
�"��c]�-��-$ nn��iSXqs]�-��-$ nn��iSXqs�,��.�m�-Dbu��S[D���
��X[_s'@`�	��[o��"�V@�\[_s'@`�	��[o��"�V@��J��m=��s�X����� �F.<��l	�������6��57��l	�������6��57��kT���l%V���}�����5?���������#@`����5?���������#@`�������j��m2?��m��m&�&��c�(���m" nn�m3	X5qs�(���m" nn�m3	X5qs@)��jUj{�Hbu{�o[K������sCs @`{	���k�Z�\@��sCs @`{	���k�Z�\@�J��y]��s�X����F �.<���lKqs[�vM����{�gR�����-w��&@`�����T��<���v��������X��i����v��������+Q3
�Y@���{�� �qs�&����c�$�� @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�UU�m.<���&@���� @�M@�l�R���:@��6qs�%��Vo�
H��
hp����4�Mu�m�f���7��	��/���z��P@bUU @�@���6/�	  n�h7���&@���� @�M@�xI��������\x�y)M�qS @�@������4�Mu�m���Kb���(=�XU �&����Ki������6/�	  n�h7^�m�F������@��6m^J @@�T �& n�y)M�qS @�@���9��Xm�7J$VU�	��h�R���:@��6q��Ki���������j[�Qz( ��* @�M��G���7��	��m^J @@�T �& n�$V����C�H������<���v��{����{����as;.���^��2l���q���i��v��}s�������	 �e\xl�]iCX'qs��-��-# nn�]iCX'qs��-��-# nv��������!�X}��v�{{��/xn.'\w��k���W��dm����Gbw����� �;L�F�v.��nN�����;�|/	�A"wG��'}krw���>K @`[��X��<����E?N�/�i��I�����*��/<;�y�?'���.,x��|���G����sn���2����%����M�Hh0�~�y%��A)�������9&>��b~e�p|���,#��|�|�g>_�lcqs�|�N���������m, nn��o�	X���9`�X]Q�1Q$V{��t�{�Cbu�����&|sr7�)n�OJ�Fw�|�����E���,�z�@`�\xL��������0I�;�����4�D�/�gN�^t~N�^<yF[x����)�����������s�8�]se��l���wG��\.��%�d�]��������>,S����|._��1���M��L?�;���^��{+����?�����������?�a;��L�?����|~��v��]����41m��w��1�|F�>i�e/��52��v_����u�T�\/�3�u�1�K�/,7������f>}�+_.�op��w���(�.c��W�;?X��n�z\:����y�z�iz��^��4e�c������/��e-���`;c;b���.c����k���	������@��gg~�O�����k����V�a��^���/�����������/�\��Y�B���7��"�R�����6��u7���P���""�����Nw��6I���N����Ak�h�{i��a��q-w����f����7[.7[1X�h5V�|>�D���s���>����Q�~��1,�E�Rn0��4Q����iKk��R-���Xg��r�1I��-J#)z����-K/�����i���s��t�/s2�d�yoX�z
���%9M���9�;'�r���_rQQ��Rn�G��;mt=Q"�I��a1]�>c���9W���F�{�4;��a�����+��2*�3,_P�
f0�<�����2��/��'w�����oI��o���_���a�7l�3vT����#@`�	��?��OF���!^�R���	�g��JI�?w������*��c���-���&s�������r��5���"@`#���P�L6���9�{���o��Gb���t����������?��#�
U"��W�������ps8,n\���1,���rs3��w1u6@���E���fx�9�?��t�s^
�?��u��g��/������y�|<�4����	;��?��:0��s����Z����u`>`����yx��f)q>�����f����-G#I�H���)�G��G��cwSN�F�t��ssb,�Z+���������G�5i	��C���]��6���s�:U+������zsc�,�)��j�T��t���x��5p��_����xrOoX�����O��$����
�2M��k�D��#�5s�{6���r�=�3���}�K����LG`�������Z��-:�H�������7�3��'��_����/�T/�����#n�_xa��~A��-�.�'�/��c�|?�y���.���������h��y~�|�[��$nI�FNj�A���d4L��q������m|�����21<�$����?�������UxknV\���9K��x�c������+������u@���$mN����8�����;rr6�$�\I�Fkc�]If��c����]������x?iN�����O�����4�;|?�jc���v�rw����i��������������|��s�{����*+��|1��-q����?�6<���|�����8��'�_�<!�4�����s��|���oX~��J�sO������������Z���>����|����$��!nw�q3��q����sX���^0mL_���1�K��Gd���Uwv�7�q=�@���k���B���r��2�
������������&F=������e� ����D��l��Uc�?[�����^6����Z[��$�b��������������yT��a]���<j��N�����X���e���u��(��:�7����<�`��\�/>��|������>�N����
�/��y�m�'��'2���|N���,
��90��=�(3�>8_���^�j���~��g�\wn�����9xP�w>.7\�|�;�y�$����`]��b�(���<�Fl��\��`=��K��|/��a�y
�W���U]'03���mL�����o��Fbu���I���eo��{��]9���z<�*�&-��a�s�]��81��tx-�+�����������0����]9y�k���WN�F"7�����g�I����I�H����s�(�(����sR�$p#�;L��Dp?�������{�����������$_#���g���%��"������I>H�F�0f/J��q1�/���a:!P��s�-�hS��+�J!'i���q��EmN�F�v�C��xT\����h��������[���v��3sR4Z�Fr�G9��V��5� QzvN>F5?v7~�2��3�7.9��tIN������0=/�;?'K#Q����������_r��<.�awn��y;.������\����E�;w�p�������������l�8�N���K�������.�K��%����y5���y\-S��4y�^1}�gn�p>yX)��/�)�r��?�;w������1M>'�w�91�����?����&&��+�8nR����~�����{�,�b���74����2:M|��)�e����4e������i��zO�<�z8�`�1r8y�&�_�,7.�&������1�a�
.���|D�g������A#�eb���!�ru\��p��ec�{���m��Wgd�����(����L�q������+��"&���A�vy���?_+��^�[N��P���W�B�t��>V<G�H����si���9+?�wG������%�wt���s,��X��m���\ n������k�(�OX�V�%y	���&�%���#9x�����A;��r<�g����\:�p�p���1�K��g� �����+2XV��`\	e]�{,c�9�>���{�z7��4yX
h�)%����z3z#�
�7�7�{7������7��g)75"��g���nZ�y��
����J�	7���������� 	S�c�\0>�o�����:]�����Rgc�Z�cY��n|��`~���e���k�K�7X��������z��1�o]n,+�c�u�����9,���s�� @`��y��3�FH����������$@���&	����`����7P��h���|�5�e���X�[^������`����y���Serc�5�$V��k\����Kb��wL���	�~�?{�XIU/~�����f+E)�HS�����(����
"U��
������ "H�(E�((Ey�Jy�n�&�M6�����s�����{��9���;g�9���/�������+�n,�j���4��K�st�rg�z�4��N1��]��3�n;���kQ����1<d�����-���)���l5E��B�W��:-�u�s[�����\q�P�-n�����][�5������-f�����������t4�����_����J�1���x�g���j���o�����6���Wr���ty���l����|�c����Z��oP����n�����C�m��[�a�~��5�?�;�}s��z��?����-�j��<���=���k����|�c�����V?�K���X��������x����]}u��]-���g��c�y���JM���%���.���N�{M�T��8:l���NR�6��E�S,�;KG��B�)���am�)��8���)�jq�P$u��92�mS00��^o����@g�:Sl5?ma�}�Z�L���3??�h�n�Z��/-R�W���7���n�Q�Cc�2��ok�),K~��
���y�Z���j��j7��Z���S`�W&a�k���6l
���v3�M�3?�����}m�������;�f���n�n���}��|��7Jf�����-s8�����Y��~�.s�nH~h��dN���^��z�A���:��y��w�)��7b
���^E��������e���{��j�����#�?��I�Rb�F@@ �G�Z��j��`���-���l��]�W���_,���W��"���?e����3�-��
��Hl�w�����l��^��H�G�e8V3�fv]����W6���fv#�cw���lW���4o�v����ysv�y�2�N�6oFk�W����ja��5�\}SW�����w���]�f�Jo��z��/�g/��;�
JQ�(�E�Ev�U��������wq�#@����p5j����:�@��t������Pv]����O��U{W�}�}&��7�ZL��L\�gZt�h3o��7��g�}���	�b�m����o��tKg��7�	��f�������!�f�zK���G���~Fm�y�q[�{W�����q�<S�k����������B�?��{���W���C��>e��4�S����L�Q+�����zR�5:Tx��>nW��W���JGM�t�t]�0h����6QS$�RS0O
���s����8�ES�j�����@FJ7HO����i7?���&h�Un�G+�b�"���3��Z��"���wZ�����b��C�v]�,�?����[���S���]�.�^7�S�������#O-��o{��'����G�\-�jW�uk�y��.����Ws���x�w����{&��� � ��t��j�=D�>��0���������Zt:Yn�i��0������5����f�����C}��~�����m�#�B]���?���.�wN�::m^���@��Y�jE`[�����;����������B!�}�+�}�+NAa���q@�3����q��2d
���2h���`����y�!����`T��0w)v�K�s���O����b�0���1d3����ZWKO�j���Zf�����u�{@f��mL�����9���4���O�0�EZ�j��9[�5bm3�*-?_Z��OR3W�-������e�4����Y�X[x��~Fm�>�x���~�)&���E:���-���7�Oj�(B�_�b���7C�]�
��k���M�T�k����]���J[�wh����o���x]����A��Q�k�������E������2�N��Y���Ef�su�����-2���c��q�sbnht�'��JfZ���	���?�:��������{��v�(����l�q?�}���v�[�����h~�ec�YXG�g������J���t���V���Rjw��W����<}*�~�]������q��4bf������$�*~m�u������-�_�6�OZ��cN��e��|,��CW��a��M��g�B�>��u��e��Y�`��1?C�#�u��!�]�`��	7�������ff�E��5'�=�:����sw��G�}��2f��w����r�������asw��g��w�o<���|��{��L�Yv[��vJ���t�����.K���gVH���u���������}���t��d�dV���d}=n��B_�������X7�'�7�k$&-��O�en��8E��zv[]�,7�G����S��n}?��6�2�������C�/���}�nc{�����j_L]�_",M�3�.[�w���A�W�����j�\��/�h��`h���n��d�6���b����9�N���M &>6������&���k�w��rs��ex��Q�3K��yu���Kv%��^�<]��
�����eR�����h�9wj���NG�p��o��u�e������")�v|�/`c��,��='t��O�d|I�5��mLJ�����N�'��_H5u�<o�a�������X�Gr��>7�A��{�����
����C���{�j^GL[�t�=?�v���M���v��ZX����na_�$$39���_�OD_��){���2�����c9	�}Z{�r�J
�����B�/���+l���w2��o�_��)m�k4{�d�����_����^i?���]��B?�F������l�kg�u���wo���U��I��[��#�T3S_##��y����}6������q�����_w�y��60��V-��7f��
����S3�����eZ��7���4�2������	����t��[�N'�po�
�c&E_w���u��}N����@�� �a���Q�����n�Z�5��Z�5��u.�Y�Z���H�)��2��.S��e����P�n��2��k�G��7��
.�����`���i�>]�#w��I��'5w�&w����w���!����z�BY�6�JM�T?�t�H���u���K�Q����
z�o
_Z$���I�Xj������s�|[@5����1_!	�����i�6�&E2����-h�,�e��k���e���{����-�0�kR������*�;Q���G���]���n\����/D!�:�K�G���?q����\;�i{�h�=3o�^���z��zR�1��kJs=i�I�7���:�kM7���[W�%��\o���~��Od�+tI�2��}-���]MNZ�_�MZ1mWL�������a�u�l!����(l�i�m��y�o�1�m���������o��(����y����O����{�|,���/����9�?t0���i�|T_u��>	���w�j��P�����Z�${M��]���'����5�>9F�I�4�:m���AeC���3�.,�o�Y4��;��v�dG��4���������u��abzS��x7���v��W�������;���/�~
�`�o��q�����0�$������f����6����m??S�����n���������voP^��v�����v�y1���{�L���t��������u�Y�_a==���3��,��C�Q�GD#��7l0��������d��6�^��o1����m���|���.7��4��t��W��Y���6�����6��Vw���c�lH����i���x7�����qs���h���W6
kS/$����(����4���c{��|�&���������/������kcAF70k�1�>�V��/F���}����z<=�m�����A���t��|3��KW.|��Q���}r\WT2��1�� �@j���>�E���7a�����{��zR���z���&��]G��G�xk�����������a�2���!��s��~��`���e�u�9{������wY��e���{��=�����~�_��-���Q�����p��[�������o��}��@�}�)�������<�V����k�n������Zfj��m��l5���>S�5w���G\��GT������"4or�����P�	��i[����9��vxm��I��w�E��Qj
�������vp���t��\ +7lf�]k
������Q�s������M�+��tv��Jw���]�I�
�A ��
�!�V������N��7����#��Th�H�^�}�+�&wf�/�����g��$����n����w����u�vf~��d~����e�U��������c��yz������m�ym�
�N����d?�|���~�sl�g��v��N�\�m<���&9N��8������[�����^�%G��;iN�u��ocQV�Z����E[W����8[������+�BWJZ�5�Z�S��@��@����6SE2x����vs�f��<}mi7����}5�v=��m��]�\ �e:�E�SX����������4�2�t;{|}5���q�v_�c���~������HR=�~�vkW:�>c��x����_4��_
���Q��a�����W�������K����_���t]������v��uv?���V������r�w}���yn�r���m�i�-��]�������]��w���_���j��6�U9��'���sJ���}5m��L�����6���Z��c3����3����s������iSN��X�5;+����i�@IDAT�k�u�|�A�����lY���6<�VN�b*���u��we�7��� ��o��o3�
�:���k~��?�-��W��Wv��[�����g]����y��\�3�t�?H��3w�����a�)������j;�#vg�v�ge��6w�����Wf���LsW��Q��9h�L3�=l
�#����U�w�]Z�5��������6^c
���I���aS$�0�bb�.�H�k��k�z��Y�aSY=����T��Z 5��sH���H{��������u�NR���K�������M�t�|W$�t�^-���W k�������E�w�������e�9��s|;z����KV��x�����-�j��p�����w����iu�-���
��w���Y�o>��/h��-p�"G�X���)-t��)$���6�m�Z�E�J��6vY�������/-.�����������|{�������A�������]a�������o���+����
��1V��e�)l��*�����������_�mu]�M�1l�\���f:��k��W�[2�z$�9b���{������-��r�d���+f%��W������[�1t�m���6���AWx���73�lk���%�(��}�M��:��G'�u�krW�j���>�9F���=���c$���������EBW�g��B����M������o��m����u�/7�2���S�t��y���|��v��m�H3_�k�������o|�9)��W_t��&��&�e_t6E\��s�n������?
�W��N�"��������]n����k-�������i�O��������k��m����[���B������S�]O=���n�G��@.�������]������}�q�~
�%�����h[�5��>
Co�1)���k��w�C�<��z��.7�v�ng���t�������M�v�i4���jc}��;��hC��"�5�;-�����Y�b�Y]���Z�-|�u���n�>9+�/����|�]���@��o>�v����k[V���5E��>S����Q�����Z[��6�?�"����F��Yo���H�w��
�������IWo*+F6���[ 5�����:�-�����g�j�T��vo����"�.�*~�]�=�� ��������'V�I��C�;�U.;%�����'\1�iG�1�z'�)���zS�-i�BmR�-~d�.��\��d���+F[�5�6_������`�
�Y���V-L�vGI[��I����i������i�q��Wm�����R��,�xf-v�~��m
��i��W]�mV}����;B e�7S�p �y�z�M�F���B�X������n��x[XW��oS����v���K�fOo�3����y
�q��Q!PI@�����;e7e�e�Hk��5E]}2���m2/��k+��{~r'��k��A��I:�<���Q:�NR�����C�4��[���XLU`���%�~�Cd��(��+0�o�\t'mrW����i��/��<��N'�z�.�7{
����:f�]'i�W�_���}�r�D�2(l�M�.C�?��#:S��r������j��������`g�������.3��n��C��2�����3��c�2{��p��t[���[��������n������6����f���[K����+�]�Z\L
�ZX��c�L����-B-;��f^IS��~����v��N������@�\o�!���	�7]D(��vff�?V3(��@�������e]a��jgm{l��]�{<"�c��l��E�B����<��]�g�J����u����������y���&���ia� �~a�K��G�X%�?n�"���������4E���ys�`��� o��&)@�t`V'y���������
h�u�)��/<�X���;g��c�m����d�dwwmr��}�}$�}M�������|�ImqT?�tc��������y�w�w�R$��*� �@���-�����/�~���ns�Q�:r�Y�����Q���$���cu��y3�� 0I����:�����U������-��;m;�M�T�k�;�")y:c+�C��YE����N��I�����u�	���6LT��9Q)�C�y�3��y�yQX��y��
��
 �������k#��M������A��5�~��m�&�;b�o3��D���b=@�	�79@��	�7�����7�]�����LN���y�6 @�������9���~�3:Z���|�	&*@����!�N�����LN����(�N��a���UN@`r\xL���@�&�@�?g�����O�.<i�l6�5i������bb%@��7= ����������NV+@au�m@���}X�� o���������}h������K���m&��ys"J��l on�`
��y�)QX����:�(��#a PU���<,D�	�7��0#b��~�'?�c�����)�����L 0��D�X�(@��h� 0��S��:���u�	PXG�@��UyX�� o�#aF�?�{@.�~����������@`"���(� �Q�����)@`"�M�Dau"g����:�� �@U.<���'@�G����������#�j�6��{��6LD��9%�A6
�77Z0�LD����(�N�la�qV��0�*��GU"�����H�������tE������M�Z��ZB,GJ����@�Z�M'Da������V��0�(��GE �e��eY���	���V�����se���}�	j	�7k	�( o�z�Bj	�7���Zg
��
PX-��L@��iX�� o�eaf���n��y������-�z^�o3�@-�f-!�#����RZ �@-����Z�LayY
�eY��T���"
@�����,��X�����5�G���w�����m&�%@��%�r@�T��Y�A�%@�tBVk�),/+@a�,3@��\xT�a PV��Y�����o�������`�9��9�������X��
�7K=h!����N��j�3��e(��ea& PQ���4,@�
�7��03b�G�����#\8�U.~�|�f�Z��ZB,GJ����@�Z�M'Da������V��0�(��GE �e��eY����%�KFx�����R2�����d��� o�wa. PI���d(�V:C�_U��jU"����G�@��y�*#������'����~��i��f�j��j:,C��7��0�&@�t:V��%,�(@a�"
@��\x�ea& PQ��Y����?�r�_����[���.�f�j��j:,C��7��0�&@�t:V��%,�(@a�"
@��\x�ea& PQ��Y��|�7���������.y��}�	�	�7���/@�o�@��y��PX�v�������4,@�
p�Q��� �@E�fED,p����o����u��}�\�f�j��j:,C��7��0�&@�t:V��%,�(@a�"
@��\x�ea& PQ��Y��,����_�G8��E�Y����@��y���@�����&�A�	�7���jg	�*
PX�H�@��eY��T oV�aA��.]!��F�(/>y�,�i�m&�$@��$�|@��y��s@�J�M'Ca�����V���'���8f �U��UyX��W���?�����w�����m&�$@��$�|@��y��s@�J�M'Ca�����V���'���8f �U��UyX��Wo���a�����g�/���L PI��YI�� �@y�fy�"����N��j�3��U(�V�a! 0N��q$�@�
�7���0b����K��G��]:���{|�	*	�7+�0(/@�,��\@��y��PX�t�0�����<,D�	p�1�� �@U�fUF,��G���+��>s�69��y������d��� o�wa. PI���d(�V:C�_U��jU"����G�@��y�*#����(�����i PN��YN�y �@e�fe� ����N��j���y5(��$b@�D�� �@M�fM"V�X��/���kF��x�<�ja�o3�@9�f9�!�����mX�� o:
�������Z��@�.<J8h �5��5�X!b����F�t����-{>g�o3�@9�f9�!�����mX�� o:
�������Z��@�.<J8h �5��5�X!b����On��������w�����@��y��
�@�����6,A�	�7�
��rg�j
PX�I�
 �@�%4@�����D���/��/���G��:����m&('@�,��<@��y��
K@�r�M�Ba������Vk� P"��G	
@��y�&+D,��S�����#�l~�\x�|�f�r��r*�C*�7+��('@�t*V����)@a�&+ �%\x�p�@j
�7k�B���,/���HWGK�<�7�5�Fj�7k� P,@�tV��
�',@au�T��X.<8@��	�7'����	���U������>{�\������c��cEh#�����}X�� o:
�c����:!&VB���	@`B��	1�R����^����~����[^��.�f�����"�@�����>,E�
�7����g�		PX�+!�^�O� 0!����X)b��~�/���:?�}_�%G����L 0V��9V�6 P]��Y��� ��X����:���=!
�bb%@�p��)�@&$@��+E,p�?�������M�|��9��c��cEh#�����}X�� o:
�c����:!&VB���	@`B��	1�R�O��.X�G8��E����f�����"�@�����>,E�
�7����g�		PX�+!�^�O� 0!����X)r�C����C�~���:_�u��6�7�5�Fj�7k� P,@�tV��
�',@au�T��X.<8@��	�7'���q
|�k�������>qh���M�o3�@�y�X�i@��y��k ���M�Aa���`z�V'L�� �������ysr^����7����8��������t�o3�@�y�X�i@��y��k ���M�Aa���`z�V'L�� �������ysr^����X'W�������������L P,@�,�`�-@��m� �@�y�i������}M��������=�i��C���w�)w�}��X�Bv�m7�"��y�J��x�����o�GyDv�ay��^&[n����J��V��[n�E���~�d�M�6;�����V�����W��1
�c@h"�5����b@`�ys�\
�����u�?�m��&K�����_���	�7sr�� oN��@ w�M��V/��r9�������_�{�1��_�r����������]z��~���������\>������z��.�H����-����-�{�����,{�_(7�|�l���%���f��|�
�c@h"�5����b@`�ys�\
��#�YQ2�e�/,i�@  o&�"� oN���@�D���$rQX����d���Ob/�
�6l�������_�����7�I��v[���~$��{��w������>��8����������E�W��U�w��v�mv��,�^{��N����X���7��V[m%����<������|���;^����7���f��~V{��ZM�e ��x.<��0�&@�����<	}�JY�v���������6$��D�W@`b���9� ��7�D��U-H���w�qG�������N�����u.��29������u���C�o�Qzzz��'��Y�f�e���g<�v��#��K.�����d�9��3�����7��������y�s�c���������?���������+���/������?`�	
�5�X����cM@��y��s#p�7��=��~���}�N�f�D���H��LL��91'�B��������O}J�<��$������x�+l�U���?�Q�����/y�3�i��#��<�H;�w������c��[la��?������Nx��x�����.�B�k_�Z;���E����?�w�|��_��U?�5y�pZ�K�Q���j-!�#��\x�z�Bj	�7k	�</W��O~��?����)��������F���i�LN��99/�F����������V^�����^}��r�a���������9s�]�t�R��G>�t����^{����#|�3P�K�Z(�w�}���n*Z�Mu���l�4��u�������r����������f��~�z��ZK�� �@���@�Z��ZB,�����< �������:�#��m&H���� �����sb-@  o:�h���������1���}�{���;����?�Q��Q�K��y�k�N�?������n��f��PuQKK�]C�\��'>Q�����~ o~��mC?�U?����n�A^��W����:n�U�V���������4�7�CfPX��l@��`��T oV�av��b�|���~�[,l���w�3��L `��� �������bm@�����h��s��g�������>������m��?�I��������y��U���m]�~�tww��\ '�x��.�����.{����u�m��>�7y�����6�����W����mmmvZ�n=���$����P�V+�0� ��Gf#���`��K�EK���{��K�4P�&� 09����X o�s ���w��]9�������y����G�XX-^_?Ou����/��K.�w������_6�|s��7��My�;�1n����o���>�����~$������_��W9����+_���mt��9s�1�����4�W�CefRX-��,@��UpX�� o�AaVnN��Jyb����c������6�y����ysr^���7�9]a�����v��&���/�)��bGZ���l�29����zO=��l������\s�5�3ZW�X!���[l��]�;���/�o����6�lcg�x�����;����c�O>�d9����W��Z�}��G�g��g���?��Vk�#���� �@
�f
 �J�������c>i�ny�.]��*@��<@&'@���k#��MwDUX������~�w���������DZ[[�H�V������bh�?����N����:<<�����]����_�bE����nM|��G���^Z���N�XM>�5���N����Z�� ��.<���Dj�7k�8W���_��������w��uM�g2�{�f�O@`���I��:�^���N��
����������{��-��'�x�/��g>c��~��������]v�EW����Kv�m7;]�}$�g�ag��������/}IN:������~��^{�e����Ny��^$�r�\{��R�3V��[;::�6��{��z���f��
��-�^|���2@@@�^�[�{��'+=sa���%O�k��@@�B@�p�������X�9��	�-^�X>��������_�;���}��}|��-tn���r���������y�g�u��y��������g��@���j��$���{�)�����m���[6�l3;?���4�7�CfPX��l@@@��+�;��[��{�=cX���G|�	@@@�786�!���g?�Y�����
�~~�~������s�]���GE!���f��v�i�w���J>���~�\u�Uv� 7�p���%/�����c7�������Y-�>���v�~�����_�Y����������:y���n��Y��o�}��K�Q��G�b9 P*��2J=h!������X�7�EK���kZ ��ZJ����y3��g� 0y������-@�t����Z�������)��"����[�����V]��Nn���+�����r����Ad��"�m���_������+Gq�\q�v��{�-�__~��r��G&����X�w���_�����rZ�+�L���*8,B�p�Q�Y �@�f�R�#�����c���sd�������L�Z�����3x��ys
hl�� o��SX-�3��������<���D?����Sz�!�h�x�]~�a����[���>�Y��G}T�����>F��O������y��������w�m?��nd�s��G�U����o�Y��c��m�������g��x���&�f��A�LPX���"@��eP��T oV�aQ.���Wn����Qo�%��x�o3�y�s��ysr^���7�9@a���BrWh2k�]w�?���IS~�����F����G�j{�6����?���>����?����`��U�v�aY�j�T��{�-7�t���1�o�i����V+�0� ��Gf#���`��[�~�N���~?����)�����L @��@&'@���k#��Mw�����c��>^W�~������������_���k4)z�b-|~�K_�}��g���y����G��]�������OZN>�d�8�d���c~����n��x������>�~l��B#���;v�<
��L#�����m� �@�y�X�iD������
������Vm�����/@��L � oN���@/@�t�)���O`B�����c��zk����Vs���zJ�n�M6��>"8ydp�
��]+��s��;u�m��XP-�G��+>n�4��b
�@��\x�6b
@�X��Y��4"+�������3:Z���|�	��� �������bm@����
��[����)���X����#�����Sbc��?g����Q~���e�9���D�����?�G���7'o� �o���?��|�;���)�N��
@ �\x�4��,@��2F,�����_�#��!=���:}��|�7�F�� oN��-@ ��M
���w0��SX�2"�@N���i�6LY��9e:6�X�����w����3��=g�6� o�;��&/@���[ �@���.�V���`����:e:6D��
p����3l��ys�tl��O�8 ���G������z|��|�7�F�� oN��-@ ��M
���w0��SX�2"�@N���i�6LY��9e:6�X���7�iW��#�z�69��y��D�����?�G���7'o� �o���?��|�;���)�N��
@ �\x�4��,@��2F,004*�-]Q2�e�/,i���y3��g� 05�����
�+@�t������9��i��1�P���!#�������c����`��g����w�<c�v�f"�������#�����Ssc+��y����j~�
Lk�V���� �C.<rt��� oN���#���k������n���]��D~����=#G��	�7���V �_���=�������)�N���@ �\x�0��%@��G,p�/�����#<`�.9�5���D~����=#G��	�7���V �_���=�������)�N���@ �\x�0��%@��G,p�_������p�9��9��D~����=#G��	�7���V �_���=�������)�N���@ �\x�0��%@��G,��6�.^�G���V������D~����=#G��	�7���V �_���=�������)�N���@ �\x�0��%@��G.�h���^�x�tu�����?�f�b��@`z�����5�O���bNa5�~]FLa�.��r$��G���P@�.���0��H>p�*y��a?���3Wv�������y3�qg� 0u������)@�tq���������:mBv�9��#gg� 0m���	�A��~�W~���~����[�ya�o3�O�f>���@`������%�S����Na5����GMau���r&��G��p@`���i����s{�|��u~�oxq���n�f"���|��Q#�����S�cK��y����j>��i�����	��L�����"������&d�y��|���~��yF�|��s|��|
�7�wF�S oN��-@ ��Mw
��<��=j
��&d �3.<rp��� oN��D,��5#��/��#���"W}h�o3�O�f>���@`������%�S����Na5����GMau���r&��G��p@`���i���]�B���Q~����`v�o3�?�f�b��@`z�����5�O���bNa5�~]FLa�.��r$��G���P@�.���0���N�r��������������m&�'@��_�1LO��9=?�F��	�7]�)�������)����� �@����Q�*�E��YFv��E?\+?�k��a��%�>�����y31g� 0=������'@�t1����s�.#��ZFv�9��#G�f� P�f]�I�?���\vs��+w��S���m&�'@��_�1LO��9=?�F��	�7]�)�������)����� �@����Q�*�E��YFv���>2$g^���p����=�����y31g� 0=������'@�t1����s�.#��ZFv�9��#G�f� P�f]�I�C�r��%#\v���6�|	�7�oF�� oN��= �@���.�V�u��m�V�F��@ '\x�$��&@��%;�X���W���?���7O�X���L�K����x3Z��ys����%@�t�������n���Z7Jv�9��#'�f� P7�f�(�Q�������!?��#{����L�K����x3Z��ys����%@�t�������n���Z7Jv�9��#'�f� P7�f�(�Q�W��On�����Wv�;���m&�%@��W�-L_��9}C��� o�xSX��y_��RX�%;B��p���@3L��y�n��(b�_�3 ���G��;�c���6� o�+���/@���!{@�|	�7]�)������h)����!�@N���I�&�M��Y7Jv���On��\���p�������6� o�+���/@���!{@�|	�7]�)������h)����!�@N���I�&�M��Y7Jv���%�KF����%m� o�'���#@���#{A���7]�)������H)�����!�@���A�"�U��YWNv���������~�������}����7�kF�� o���� �@~��.�V�s��u�V����@ \x� ��*@��+';�X������6�Gx�[�e�]�|����7�kF�� o���� �@~��.�V�s��u�V����@ \x� ��*@��+';�X������[�����.9�����D~����5#E���7���^@ ?�Mk
��9��:R
�u�dg �.<rd��u o����E,��{����>�Yr����6� o�'���#@���#{A���7]�)������H)�����!�@���A�"�U��YWNv�������/��#���*��:�����y3?�f� P�f}��G���bMa5?�|]GJa����r ��G��@�����r���-Y^2��}h���j)�G#~�f�1f� P_�f}=��/@�t1������RXm+;E�����8�
"@�l+;�T��W�����;���e�N�f"��|��Q"�@�����dO ����3��|��u%�����C�\�����@���������.�~����A?���~����3}��|�7�gF�� o���=!�@>��.�V�q��}�V�N�@ r.<"0�C���7�N�#������������r��z|��|�7�gF�� o���=!�@>��.�V�q��}�V�N�@ r.<"0�C���7�N�#��C���kz���E�|��y��D>����3�D��	�7�g��@ �Mg
��8��>J
�u'e� ����!�@���u'e���#�Y�G8��E�Y������y3qf� P?�f�,��C����La5�{�GIa����"��#�3<��y����0r����R����Q~��y���6�f"~�f�1f� P_�f}=��/@�t1������RXm+;E�����8�
"@�l+;�X��k���>4�G���=���;}��������"�@}����do �y����j��zCFHa�!��"��#��24h�y�!��4b���'7�~������)o�,�f"~�f�1f� P_�f}=��/@�t1������RXm+;E�����8�
"@�l+;�X�gw�W���G��s:����6��7��1#D��
�7����@ ~���1���������jCX�)D,��G��eh ��fCX�i����
���W�n�I��w�|�f"~�f�1f� P_�f}=��/@�t1������RXm+;E�����8�
"@�l+;�\`���%#\v���6����q���!�@����7e� �y����j��y�FGa�a��"��#��2,h�y�a��8b�.\)O��#��1s�Y���6q�7��/�C���7�o�@ n���/���������j�h�1D*��G��eX �0�f�h�q���n��y���Io��W?�����[��w|�_��YS��q�7]|)��}�7ltVF��@ R.<"
,�B��	�7F��#��/���_
����.9|�n�f"n�f��et P�f�M�#�-@�t����y���QXm-;F�H���4�&@�l-;�X���s���G��gw��{��f"n�f��et P�f�M�#�-@�t����y���QXm-;F�H���4�&@�l-;�X����r�E�����WO���L�-@��;���/@���){D����.�V�>�6:
�
�e� ���a!�@���
�e��,Z��d�W/^ ]-%�h�)@��3��
'@�l�-{F�8��.�V�<�>*
�
'� ���� �@���
'��
|��U����~t�:|�<w��f"^�f��ed ��fc\�+�+@�t����9���QXm(/;G����0�	*@�l(/;�X�������2�Gx��e�u�6�
�7��-#C���7��^@ ^���-��x������jCy�9D(��G�AeH �P�fCy�y����:����~��{�9~����D���xc��@�1�����W�W���bKa5�s��#���P^v�
p�aP4T���P^v��]�g���G����������D���xc��@�1�����W�W���bKa5�s��#���P^v�
p�aP4T���P^v����#r�y+�gt��5��6�
�7��-#C���7��^@ ^���-��x������jCy�9D(��G�AeH �P�fCy�y��.]!��F�(/:y�l����L�)@��3��
'@�l�-{F�8��.�V�<�>*
�
'� ���� �@���
'�������m�#��;z�E���m&� o�WF�� o6��=#�@��MW
�q��
���s�L����p@�����s��.��O~��?�w�f���,�f"N�f�qeT �8�f�l�3�)@�tq������QQXm81@�����,�.@�l81�X���������y�r�[{|��8��q��Q!�@�����e� �y����j��w�GEa���"��#��2h�y��� b��?:$g\���p�����c��6q
�7��+�B��	�7g��@ N���+��8������j��9D&��Gde8 �p�f��9@�C�r��%#\v���6�������!�@c����e� �y����j|�v*#���
3A�����(�R o���A"8�K+e��?�s��+[o���L�'@��/��+@�l�/{G����.�V�;�S��T�9D$��GD�d( ��y3f���o��?�7�Gx��������L�'@��/��+@�l�/{G����.�V�;�S��T�9D$��GD�d( ��y3f���o��n�#<p�.y���}��������!�@c����e� �y����j|�v*#���
3A�����(�R o���A"���9��>?�m�!��f">�f|1eD �X�fc}�;�'@�t1�������(����A@ ".<"
&CA�T���0s��zj�|���~���k���8����O��_L4V���X_���	�7]L)��wn�2"
��0s�H�����P@ �f*�$r�EK����������d�x������ �@:��t�9
�#@�t����9��H(�����@ .<""C@�T���rs�HN��*y���~t�9r���E�o3�y3�x2h�y���� o�xRX���Nm4VS��@ ���a �@j����9P����^����~����-�������K��W<
4^���xc��q	�7]<)��u^�6
��Qs �D��H�0@ 5�fj�(b�e���o�b��_�%�������K��W<
4^���xc��q	�7]<)��u^�6
��Qs �D��H�0@ 5�fj�(b�;�����������O6����K��W<
4^���xc��q	�7]<)��u^�6
��Qs �D��H�0@ 5�fj�(b��V��	��#���"W}h�o3�y3�x2h�y���� o�xRX���Nm4VS��@ ���a �@j����9P��.]!��F�(/=u���n�m&� o�KF���7�q�( �y����j<�t�#���*7C���� �R o����"���V�}�
����y��:}��x������ �@:��t�9
�#@�t����9��H(�����@ .<""C@�T���rs��.��W~��A?��_7K��L�f"�f<�d$ ��y3g����7],)��sN�:
��rs0�@����@ U�f��,b���N��q��^�v��o��m&� o�KF���7�q�( �y����j<�t�#���*7C���� �R o����"���!9��5~��zZ�|��y��D<��xb�H@ �f:�� o�XRX���Nu$VS��` ��! �@���T�9X�kF��sV��p��K�4� o�GF��	�7���H �y����j�s�����:9D��p����}H]���:9�X��@��@IDAT�V���#~���o�l������C��G�'@�L��#!�@�MG
�q������j��2.��G�H�@ u�f��0b�O~s����!?�/���w��m&� o�GF��	�7���H �y����j�s�����:9D��p����}H]���:9�X�k?����n��p�+g�;����L�!@��#��� o�g��@ ���#��8���GAa5ur���#��� ��y3ur����< ���G���:d�As|��8��q��Q �@z����9�!@�tq������((��N�@ �\xd<�tR o�N�#���
���V�>mA�\�����D��8��(@ =�fz�	� o�8RX��|N}VS'�� �q.<2@����7S'���,Z��d��N_X���}�f�c�@ ]�f��
�/@�t1����s�)#���v���#���� ��fS�9h�'}e�<�b����G��g?������y3�1d ��y3]o��� o�RX�����PXm
;E�p�����uh�y�)�4b���Y#�����	o���w��m&�/@��~�+@�L���!�@���.�V�.7eV���A@ �\xd8xt�"@�l
;�X�[���������e]r���}����7�CF��
�7���h �}���!�����M����sP��]G���7���A#��?�������m����9��D�����!#@�t���zs4��y����j�������jS�9(dX����#�@S��Ma�����ay������n�KO���Ld_����2HW����7GC���7])�f�\n�(�6���"�@����p��:4E���v���%�KF��-��]-%�hdW������sh�y�9��+@�t�����s��=���T~���#�A�� �T�fS�9x��l�<����Y����=������y3���� ��y3}s��� o��QX��y���SXm=F��
p�����mh�y�i�8b��o��[�<�Gx�>��M/���Ld[������{H_����9GD�l�7]�(�f�<nZ�)�6��#�@F���h��64M���4z����n�\��~?��w�����m&�-@��v��=�/@�L��#"�@���.~V�}7��V�F��@ �\xd4pt�&@�l=�X�O�����#�n�6���|��l�7�?z���7�7�� �m�����l��M�=����s`��
�F��	�7�F��#X�7"�|q�����f��f"���l���#�@�����9"d[����Ga5��q�zOa�i�2*��GFG�@�i����s��?g����Q^x�|�ln�o3�]�fvcG�@�9����sT��y����jv������jS�98dP���.#�@S��M���|��5�����?zH��d�N�f"�������#�@s���q�� �]��������M�9����sp��]F��
�7����#��G}r��~��x�LY��,�f"�������#�@s���q�� �]��������M�9����sp��]F��
�7����#��������xn�|�m=��Dv����=G���7���Q@ ��M;
��=���s
�M��� �A.<24��M o6���G,p����+V�n�i�|���|���
�7�;z�� o6���"�@v��.vV�{7��V����@ �\xd0ht�*@�l*?�X``hT[��d��N_X���M�f6�F�@�y����sd��y����j6������j�C@@ c\xd,`t�.@�lz�@����J���?��:v�l�Y�o3�M�f6�F�@�y����sd��y����j6������j�C@@ c\xd,`t�.@�lz�@���v����C~��k���y]��D6�����F��	�7�g��@ ��M7
��<��k
�M@��	p�����]h�y��!�|�}r������.y�����D6�����F��	�7�g��@ ��M7
��<��k
�M@��	p�����]h�y��!����9��}~��m�!�2�����y3�q�� �<�f��92dS����Fa5��o�{Ma��!� �1.<20��M o6=t b�G��A>p�j?��sZ�����m&�)@��f��54O���<{��� o��QX�����^SXmz�dL�����"�@���M�\`���%#�z���h)�G#[��l���"�@�����=@�l	�7]�(�f��
��V�	A��p���@�MF��L(�H��d�<�������#;m���LdO������ch�y����'@�t1����s7�SX
"t2$��G��EW@ �fa�|��^��=�~����-o|a�o3�=�f�bF�@������st��y����j��� zLa5�0�	��
]E� ��A��ND,p�����[�����.y��}���	�7�3z�� o6���#�@���.fV�w��c
�A��N �@����P��*!@�"t"b�?�?(��V��N[������m&�'@��^��14W���\��� o��QX���D�)�:���#C��� �y3�0�����;"�����pFG�\�x�o3�=�f�bF�@������st��y����j��� zLa5�0�	��
]E� ��A��ND.p���~h���������V�f"[��l���"�@�����=@�l	�7]�(�f��
��V�	A��p���@�MF��L(�H��]�J�}t����w�����m&�%@��V��-4_�������y����j���`zKa5�P���	�D�`������D,p���O�Z�Gx��������m&�%@��V��-4_�������y����j���`zKa5�P���	�D�`������D,��?�e7���r�N9e��f"[��l���"�@�����=@�l	�7]�(�f��
��V�	A��p���@�MF��L(�H�}dH>q�?�gn�&�3�����y3[��� �|�f�c@@ [�M/
��:o��-��`BAG@ #\xd$Pt� o
:������tE������M#;������"�@��0�@/@ ;�M+
��9g��)����Ag@ \xd Ht� o:��{�_)+zG��x�<�ja�o3��fvbEO@ �fq� ���������A���jP��3 �.<2$��A	�7�
��X���Z#w�?�G��g������LdG����X�SC��F�dG���bEa5;�lP=��T8�d@���."�@P����Ag"��g}r�o�|E���U���Dv����=E�0��a��^ �@v��.VV�s��S
�A��� �@���@��"%@�*t&b�_�3 ���G��:�c��m&�#@��N��)�!@�#��#@�t�����s6��RX
*t2 ��G�D@ (�fP��3<�������7��*�0�����y3;��� �y3�8���y����jv���zJa5�p���]D����A���D.�h���^�x�tu�����y3��CK��V<�
�/@�t1����d)�:�p�pp�)@�2,t*R�S.^)��g����G�������LdC����8�KG��N,�	dC����Da5�kp���\H�.��G��{ �y3��������^�����s����]��D6�����D�p������ �@6��.NV�q��K
����!�@�\x ���	�7�	�X��_����\�G��K���}�}��l�7�'z���7��=A�l�7]�(�f�|
��V�	B����<@t� o:�����/\��G��6��C��6� of#N�� o�z�� o�8QX���\/)�:��p�x��'@�.$t(b�'W
��_^�G8��E����f"��l��^"�@8��pbAO@ �M'
��8_��%���BB�@ p.<�C�������E.p���~h����S����V�f"|�f�1�� �y3�x�_���bDa5�s5�RX
2,t
��#���5R��dX�T��b������'��]���m&� o�#z�a	�7���A����.FV�?W��!�� �B�@ `.<]C� ��A��NE,����-�#|��g�[^:���_��~��!�%@�+�� o�QX
�\
��V��B����88t
� o:����_'W��������������L�/@�?F�� o�z���7]�(����C
�A��N!�@�\x��A
�7���X�/
�'���#���m���y��D����cD@ ,�fX��7 �y����j��j�=��dX�,��G���k �y3����������(�����i�-@�;>�� o�z�a�7]|(��}��;
�����!�@�\x���
�7�

�X��/��5}#~��0O�6����[��v|��'@�/&�� o��PX
�<
�wV�

C�@��40t� o:�������}h�������;t�6a�7���C�������!�@��M
�a������j���c ���n!�@���`CC�"��'}r����k���Y��D�����C�@ <�fx1�G �y����j��i����lh�*��G���[ �y3�����~v��|��}~�/��C>r��f"l�f���w �y3���#[����Ca5��4��QX
64t��#���-V��lh�X����������X�*�?���[��v|��'@�/&�� o��PX
�<
�wV�

C�@��40t� o:���%�KF����%m�
�7��
=C�0��a��^!�@��M
����A���j���s ��.!�@�����C�"8������?�����m7o�m&� o�z�a
�7���B�p��.6V�=G������C�@ @.<
]B����A���E,��ek�������z�.�f"\�f���g �y3���+W���bCa5�s4��QX
:<t��#���%Z��tx�\���e�\��?�7��%G�����W��nl��)@�3.�
� o��PX
�
�gV��C���0(t	� o:����>(�~���p�m;�����L�+@�76�� o�z��
�7]l(��{��3
�A���!�@�\x��A�7���X����r�E����n�KN���L�+@�76�� o�z��
�7]l(��{��3
�A���!�@�\x��A�7���\`���%#��������y4� o�z�a�7���C����.&V�;73�#
���D����(t2!@��D��d��l�<����'�#;o���L�)@�3.�
� o�z�a
�7]\(��y~�+
����"�@`\x����7��X�������2�Gx�f�~/���L�)@�3.�
� o�z�a
�7]\(��y~�+
����"�@`\x����7��X�{�]'W�����u�u�����6a
�7���B�p������!�@��M
�a������j�!�� ���� �@����CD#�������~��o�&�}�<�f"L�f�q�W �y3���3S����Ba5��3�^QX
>Dt��#���^��|��`�����q���#���"�,^��L�)@�3.�
� o�z�a
�7]\(��y~�+
����"�@`\x����7��\��sVH����W�?_6����L�'@�/&�� o�z��	�7]L(��wnf�GV3&:�	p�P0�
dB����0������j���6�~��y�v���Dx���bB�@ l�f���w �y����jx�f&zDa5a�� ��� �@&�����X�����G�#|��g�A{��m&� o�z�a�7���C����.&V�;73�#
���D����(t2!@��D��d�?�k@.�a��;w���m&� o�z�a�7���C����.&V�;73�#
���D����(t2!@��D��d�t��q�j?��7k�s����L�'@�/&�� o�z��	�7]L(��wnf�GV3&:�	p�P0�
dB����0����F���+JF����%ma	�7���A�������"�@X�M���<���q���C����l�}��e����y&�y��r��w��+d��v-"��W�/s|�A������G�v�A^�����[nY�X�V��[n�E���~�d�M�6;������V�.��U���j:,C�p�1��9 �@5�f5�!���q_Z)�������{��36m�m&� o�z���7��=D����.QV����?{weUq-||3t��6��A	�D�Sc�*�)D���#�G�QA
�=NNF���(�5<��������-MC����:�����v�Z�:U����
T��]U������v��r�5�����^��;��S����V�Z�z���T.��y��gk�6}�t2dH���v����G��	j�f~��{���Mk�����>*]t����g��G!�-����g]7�����nh���h@���x�M���SR��&Y����<��b�������u3���i@ �����#N��%@������:b��<yraII�����l�2Y�ret�4/_z���w�n��]L���W_�~�g��r��������Gt������.�,g�7n��t�M���{��'�yG���K�kf��s�f~<�������O?=�w��}���~�zy����k����������,�<_�a���X��� �@<x��e@��f0\F���C�T��7*���[$N.�s�%@���|p�}�f���"�@n	P7�|�k�����r���F�����>(��7���g����j&=��0 �n�2�b���O4�1c�\x���x�����o_y����4i���+i��E���������x��A2m�4���������_�����5�b3��s�r�!Q��[�n���/���/�5w���w��5��?������i�6$�� �@���@����
	�:������*�FGt)�����s�%@���|p�}�f���"�@n	P7�|�k��r�-r��7F����;������y�]��{O7l� ����9s����?�xy�����G]�j��n������;G�f��)������������.;v���/��]�t�=����g���f���rJ46����{G��_�\r�����w���m�|����e����4V�u@ [��lf �@C����x�k��.W����h�V���am��An	P7s+�r_����9�� �[��8��~�a���eee2r��Zw]������=��se���������]�'N�����u���_����i��F��g�).��;7�|��;6�n���4I3�d�����_~��W�G��4�NW������i�6$�� �@���@����
	�:~z��6k����JQA��kLrC���y� �u3�\qR�
�f�u���n/�=��sL�#��O�!C�D������~T��4JO>��h\��k��6�x�:D��j^k�(��I�����dk����>+�����K�{Z:� 9��sd��r�	'��%Kj�x46
�6m��p���>�W�@u\��Z�@�:x���� �@��:`���g�����g_�����J����3��f���� �@��0��)@ w��q.�7V���>�����3�D
M�QG���m���B��6����c��;OMs��1)�m�6)..��S�L��C�F�����r�q�E��.]*��|3�[��5�|k�&M�K����]w��<_���7��Z��!��x��m�@�>�f}:���?���,�7���^|f��vD��3��f���� �@��0��)@ w��q.�7V���j���[��g>�w��5�i���x�	���W�3���S'�����i����/������e��k�����?,���������>��]�F����i��&?���e���r����=��c���e��b�0MU�\�y����oLc�>^Cj��Q��+ �@}���tx
�^�"����nx�O���������� '��9��	P7JGE���n�iP�X5�k���������8����i����y�������6l����G����3G]��q���=���c4���mc����]�V��o����O?},��,�c��.w�yg��c��������z5����|�
h�6�� ��n<x��h@���/#�I��WW��G��n���@n����3��f���� �@��0��)@ w��q.�7Vk�r�W���={F�Ms��s�s��Y���'��fh��5�.�����K���c��Q�=��m������{O�u�]�|wk��������y��?�w�f����G�>���������}���}/q
@@@@�@���r�_���4+�)W���� � � ��"p��G:?J^5V���o�)G}t;i�$����d��r�a�E��~�m9����q���G�^����]�vE�f�w�u�6���Gc�����w��o��������W���+u}���������wn��v9r����
��4V���2 � � �L`���zG#���?��f;�� � � �4V�?�`��UUU��E�Z+��h�������S�N�o���~��yw�)��R�����J1�N�1�}�Q�z��R��'c����;O>�d�@5/|�������Jf���;N^{��Z����_K�����n�y�Z��\�@�:���:`���!@����� 0�Oe������:��J��
S8	[�'@��O��@�����&\A��n�:�����W/y��'��L5�����m����(�|�u��y'���;�I�&Y�v���w�^p�2k����s�9G,X GuT�N����+��)S�D�����G/��U5�B5�w��i�&g�z����O�>��|�A��|�s4�/����x���#�� ��u�!!^G���=����Uv����s~�����u37��)@ �f8��� ���8��������;������/e���������80���SO�Yg��G�!�'O���_|��m����g�>������?��w�y��g�����2
����Kyy�4Hx���%��>���g��)���J�o�Yk���n�:i�(��%_��:L=���� �=<x|
�@�z�������}k�<�x�����
e��%v� 7����N��P7��'E���n�yP�X]�l�s�1Qt'�t�����L�������4;���������^�:zw�����3���P��Y}4��5]��]k��j>rx�����>�L�v�*�c�����-[�����Y�z����t����?C��T-))�E����+�#�'L� �G��~���u�����7D|��nZ� cj�;�? �
����?���n��`�@�������7�C��w�4���3�
�fn��S �@8��pr�I@ 7��q�5VMX����n�w��^T����j�����~���Ns=��P36�����������s��g�a�fP��{�|��1������K���U���6
^��4y���d��
��G��p�Bi��Y4����|������j}:�������	W@�������~6W��A�n��t��vYs&�P7��'@����a���"�@���8*�&�y��E���4+3�\�~����n��Y��V���S�F��4=�k��y�]w�i��V�G�x��%�G��w�f����-��"�����y��k>���3v���5/��a���p�V���g&������i��%�u@��x��~�"�u	P7���:����R)���n>�����m;g��u3�pK��V�8-�/@��s���j�3�k��j�����.]������4���'����.�:u����I���h�����{��g��EEE�m��y�fY�bE��T�����5�y�����X���hX�����	@��u��c����M����� W�W"��K��3H_���~8�%@�+_���n�9P�XM�6�{�zsKd �F�7���z��zsKda
���
y��*��{�P$���9������� �@X�����i@ }�f�����A���j�i�� ��)��5)@�2mZ��+�U���*l�?=�@������/@�L?���n��/N��P7��XM�^�4V�L�F�x�H��@ H�f�i���>�j�\3�;�^m�����9������� �@X�����i@ }�f�����A���j�i�� ��)��5)@�2mZ�@���fE8oL��9�t�����;�'@�/g���n��4V������j���� ��)��-+@�6u\���������N�J����3HW����?�#�@x���r��@ ]�f�Oc5��0��i��:�)	���<�"�@���`S��L||���a�������G�";g��u3]vG�������#�@������j��a���X
6uR��#%x�E�`������+xd���t����?+�O-�s�
P7��gwO��^�81�+@���i��{�;��`S��@ %<R�g[V��l�8�b�e��d��r������-��A���t����n��3N��
P7c������Nc5��qpHI�������n�:�X���r��e6����e��6v� ]�f�����	P7��'F�t���?��t��`w��l�88�$��GJ�l��
P7�MW.�{��Y�����GQ��kL��n���� �u3��qrHG����XM��~W����@�������n�BP*0jf�|�������a��9�������3�)@�3o���n��4V������j���� ��)��%-@�:}^��]���_�����S[�Y?kn���n�g�� �u3��qjHO����XM�zg�A���#�@
<x���� �u3��qx�O��V������Z(C{��9�������3�)@�3o���n��4V������j���� ��)��%-@�:}^��;�T��\n#<�c�0���3HO����=;#�@���0���@ =�flOc5�{0��i��>�)���:["�@��������U����Qj#lV�H��jk���n�g�� �u3��qjHO����XM�zg�A���#�@
<x���� �u3��qx�o�([*w�(�m-{�nb���n���� �u3��qrHG����XM��~W����@�������n�BP,p��M�rm��pT���A�v� �f:����
P7��'G�t���;��t���w��|
	<�����@ x�f�)$�3�������F�������v� �f:����
P7��'G�t���;��t���w��|
	<�����@ x�f�)$�/,���V�~H�\�����#@�L��]@ \�f���� ��u3v�������4V�O! ��g<<��/@�>��X��_l��|g#�g��r�%m��A:��t����n��;N��P7cw�����Jc5�x���38�!�@����SH�*�w����"�7�]�����svD����a���#���flNc����bG�*�H �Q���l�*��*�H�.�Z*_���N��������3�/@��o�� �u3��qz�/@���i����T�HcUE	<
�����@@�uSE	B����$�g��p�����C������svD����a���#���flNc����bG�*�H �Q���l�*��*�H���j����Fx�1E2�G��3�/@��o�� �u3��qz�/@���i����T�HcUE	<
�����@@�uSE	B��kl�;�o������_K;g�_�����@ l�f���� �_����X��������4x���#6[!��
���4�b�O��!����F�����?���3�/@��o�� �u3��qz�/@���i����T�HcUE	<
�����@@�uSE	B�@���fE8{T[)*h�u��?��?kvB�My$
�'@���i����T�DcUU:	<����-@@�uSU:	F�����d��6������
���_��_ovC�������@��u3������S��U5�$�$���'h�A5�M5�$�w,(��VT���Q,gYd��
P7�z��/@�?�D�~���7�U�����h��I%� ��'<<A�
��n�I%�(�����+[m��8��\z�v���u��7�!�@����sH �W��{�X�{�������Tx���4� �����T�b��}T%��H����NMe��Vv���u��7�!�@����sH �W��{�X�{�������Tx���4� �����T�b�o�w���Km��
��Qm���_��_ovC�������@��u3������S��U5�$�$���'h�A5�M5�$����Q�U��Q�;���Y�����n��f'�!@���G�@�������{N�N4VU��`@����T	P7U��`������t��pt�9��B;g�O������@@�uSG��	P7ck���9U;�XU�N�A<xx@fP%@�T�N�Q,p�s���������\z�����n��f'�!@���G�@�������{N�N4VU��`@����T	P7U��`,�[�L_Ta#<��B��;g�O������@@�uSG��	P7ck���9U;�XU�N�A<xx@fP%@�T�N�Q,���j�q�&a�M���Z�9�M���:��:�H �O��[�X�w�������tx���2[ ��*���t�b���]2`�����i�5g�G�����]@@�uSO.��P7cg�~�7u��XU�RB�<x8fyP'@�T�RR,p��R�X��Fx�%����M�����gvA=�M=�$�#@���i������BcU]J	�����@@�uS]J	H��-�l�w?������H3;g�G�����]@@�uSO.��P7cg�~�7u��XU�RB�<x8fyP'@�T�RR,0��
y���6�^�I��������gvA=�M=�$�#@���i������BcU]J	�����@@�uS]J	H���+*e��
����>-�����gvA=�M=�$�#@���i������BcU]J	�����@@�uS]J	H���
���i����n,�mc��P7�8���n��%� ���f�Lc����n��RJ@ �X���,�����RJ@�z��6+����JQA��kL�
P7���:��n��)!��[�f�Kc��}�vu�jSK` �H�G�,�j��jSK`JF�W*���F���[��:6�s������t	P7u��h@��u36����^S��U�i%(p(���C\�F��M�i%(�������l����XN=�����n�7f�%@���O�A��������{M�4VU���@��qYT
P7U����}m����V�?-���^l��P7����n��'� ��{�flLc����r�*�JP �P���,�*��*�JP���g�L�[n#���@n�����n�7f�%@���O�A��������{M�4VU���@��qYT
P7U����/�!C���[5�YW��s������t	P7u��h@��u36����^S��U�i%(p(���C\�F��M�i%(����Q�U��QN�FZ7�sn��n}Y�	P7����@��u3�����>S�:�U��%0p$���#X�E��M��%0��<P&}��Fx}�������[��[_VG}�M}9%"p+@��}i������NcUmj		����e@@�uSmj	L���g���w�l��B�>���3p+@�t��� �O���/�D�n���/�U�����i��M-�!��#<��,��n�M-�)x�����[l������J���[��[_VG}�M}9%"p+@��}i������NcUmj		����e@@�uSmj	L��{k���9�6���n"�����n��eu�'@���S"B���������L��4V����@���`Y�
P7����l��%�n����1���L�	P7���2��n��+Q!��;�flKc��=�ze���Kp �@��,������Kp�.��T6U���uyk�A�&v���u��-+#��N������n��4V��c�W���:��x�p��� �Z���:��X`��7��O�m�W�.��\h��	P7���2��n��+Q!��;�flKc��=�ze���Kp �@��,������Kp�f�P!����>���������n��ee�)@���W�Bw�������{L��4VU���@��PYTP7U������J���
����@F������n��ee�)@���W�Bw�������{L��4VU���@��PYTP7U�����r�\;�;��m�����9w�Mw���:��:�JT �N����Xuw��^�����8���*K"��j�����r������p��vYs&n��n\Y�
P7����@��u3v�����R�*�U�)&@HX���AY�P7�����T����N�J����3p#@�t��� �W���7�D�n���+�U7���Ui��O1"�@�<x$�r �^���>��X�?�m��VU�/?�Xzt+�sn��n\Y�
P7����@��u3v�����R�*�U�)&@HX���AY�P7���<��B�-���<�H������n�qeU�+@���["C7��������K��4V���@ a<e9P/@�T�bT,���Ur���6��(��������n�qeU�+@���["C7��������K��4V���@ a<e9P/s���IDAT@�T�bT,���2��2a�=��m�����WVE��M��%2p#@��]i������JcU}�	��#aP�C��M�)&@�������j+{5���$Y�f��������sL� ��u3�����}�7��X��T($$��GB�,�y#@���T�R��g����v���
h)�v.�s�P7�7eE�-@���_�C�����)������X��j^�� @ A<�d)��f^�� ��T�,}��F8������v� y�f���������Kt ��u36������+�X��4$$(��G��,�y!@���4�b�'�m��/m��8�P.�e��3H^����)+"��n����$/@��Mi�&o���4V�"��	
��� &K!�@^P7�"��X`��U2��ra�}��jm���n&o�� �[���;�D��P7cS���[y�"���H3A"�@�<x$��R ����H3A*��y�\|g���YA#�3���3H^����)+"��n����$/@��Mi�&o���4V�"��	
��� &K!�@^P7�"��\`��eK�.����H�V���A���d=Y
�P7���@ Y�f�Ic5��*oV���7�&PHH��� Y�F���7�&P�7<�I>XWm#��o�����$+@�L���@@�uS����n��4V����f5�y�jE��x�H�e@ o��y�jU,0mQ�,�[����I���q-��A���d=Y
�P7���@ Y�f�Ic5��*oV���7�&PHH��� Y�F���7�&P�����i�U���Z(W�[b���n&��j �_���?�D��
P7cO���Wy����I5�"�@B<x$�2 �7���I5�*����r�����m�D�����3HV����'�!��~���!$+@��=i�&{_��j4V�&��		���$� �@�P7�&��X��z���1+�yc�e��$'@�L���@ ?����g�D�����%������Z��j^��`@ <@d	�+�f^��`\:�T��n��p�E�d�M��Ar���,Y	�C���y&JHN��[�XM�����h��U�	��#D�@���n�U�	V���?�I�^]m#����r��Ev� 9�fr����!@���<%$'@��-i�&wO��J4V�*��	���"K �@^	P7�*��X`�+���6�_S$�(�s�	P7��d%��f~��(@ 9�flIc5�{*�V���W�&XH@��Y�J���W�&X�KVV��'*l��w)�1}[�9�����Y���u3?�L� ��u3������n�@IDAT��	|U�������@LH@�EQ�"��p����*�8 ��(R�j��s���ZTPQ�Z�Z�Z�g�ph+��uDE�IHH	$�s�w���!��s��g���_�>�{}�f}N�������?�|
���.�K�.�y%�#�v
���Kn�;����D���n��t4���ur������T�M��Rs�	P7���N `�u��<%'@��,h���l��U��M� �/A(r�I��iS���t�Q�W��x���RZ\w�I����
��%@��+�D��P7=C���%+�@c���4d!��Gx\�V
P7�L;A*p�������UtW�T![oR����n��]@���=�&RF���9�X
f?Yw�����@ K^<��r�N��i]�	�`�?�W/����"<uD��l�R5g�u3G���P7��5�"�@0�M���j0�����X�.��Y
���% �#��u�M�RN���\������;��i?+Ss�P7�q�. `�u��\)#@��i������U�RN� ��/Yr9X'@��.�l������ww����M��K�#@���� ��=�M{rM� �u�s���~��.4V�K9#�@��xd	�� `�u�����_����jT���d���j� �f0����n��k"E�`���#��`��uw��j]�	���#K@.G�������
8aF��miSQ�4�J���9�����r�K��iW����nz�4V��KV�����i'h�B��,����nZ�v�6X��[k�����/<�\vX����nfo�@�.��]�&Z�^����X�~/Yy�V���@ ^<���R�R��ie�	�`������"3����j� {�f�����n��o�E�����!������w��je�	���#<.E+��V���
xp�����*��w(��/Ws�P7�7� `�u��|-d/@��i�f�����U+�N� ��/Y�q)X)@��2�m���������7��H�>�R�d/@����; ��]�M��M� ��u�3����^��4V�L;A#�@�xd��� `�u��������d���q.��'n�$;�fv~\��	P7��9#�@v�M���jv����i�Z�zG�x����@�Z����'p�&\[#5�[U���^)��)Rs�	P7���j�O��i_����nz~4V��G�^Mc���8d(��G�p\��
P7�M=�,p�u���-*�_��@�����3�N����W#��}�M�rN� ��u������>��j�����@ C^<2��2�V��im�	�`�[�� �g��p�^�r�>ej� ;�fv~\��	P7��9#�@v�M���jv����i�Z�zG�x����@�Z����'p��|�I��[��p������+��Av�������n��s"F�����������W�X�6��
���!�!����MkSO�|��:��-�T���
��IUj� ;�fv~\��	P7��9#�@v�M���jv����i�Z�zG�x����@�Z����'p�FM_��S{KiqA�1&�	P73s�*�W��io��2�nzn4V3�?�_Ec��-����'�#����M���
�bN��we�������A?���2�nfn�� `�u���5d.@���h�f���������'x�@������nZ�~�7X��w������"<��2����j� s�f�v\�v
P7��;Q#�@��M���j�{��+i�Z�~�G�x���K@�j����'x��\�(��Y�"�k��?�L�d.@����+@�N���y'j�\�����X�|Y}%�U��O� ��/�q	X-@��:�o��?�m�?,�Wn�y�\~B��3�\����W"����M;�N� ��u��������J�V���@ ^<2@��Z��iu�	�`�/j���jU�=Kd�����A��������n��w�F�����������W�X�:������ ����M��O�����2.�ygWIeYa�1&��������n���G��M��������
�Xe ��x����� �u�=���S�����]����r�y��3�L����W!����M{sO� ��u�s�������*��o@��/>�8��nZ�0X`�������U�'�S�q5g��u337�B{������@ 3���Fc5��c�U4V�� ��O^<|�q:X/@��~`�����F<��"�w��|h��3�L����W!����M{sO� ��u�s�������*��o@��/>�8��nZ�0X�����7�U�X$3N�Ts�	P73s�*�W��io��2�nzn4V3�?�_Ec��-����'�#����M���6������E�xZ��9��M�f\�vP7��?�#����gFc�����oh��
@�x���l@���@�l��WWKcS�
r��J�AU��3�/@��o� `�u���=��nzf4V����V��*��'���?/�F�������:y���yG���[��9��M�f\�vP7��?�#����gFc�����oh��
@�x���l@���@�l�[k��_lRA=�������3�/@��o� `�u���=��nzf4V����V��*��'���?/�F������W����T��mS"�Y���P7��q�-@��;�D������U�{�+����6@�	������@�&{���|�\��U*��}
���������3�@���v���@��u�3����p��4V� ��?^<�yq6 @�d `�@SK���Q��i}��L�	P7�yq6 @�d ������U�������V@�	������@�&{����F��mU��8������3�'@����� �u�=���nz^4V����N��*[�'���?/�F�������:y������d�J���?��?/�F���@��u�����o�p�w4V�
 ��?^<�yq6 @�d `��_�n�{�mR��{����L���n���l@���@�	P7=/���
g'@c��������g#��M��<��Z����*�!����*���?��?/�F���@��u�����o�p�w4V�
 ��?^<�yq6 @�d `���o��/o�U�VmP(s��Rs�����8�n�@�M�����}���	�Xe+ ��x����� �u�=��������s{��q��tM���5'�Bb���#�]�nzN4V��_8���� L@�4�x��c@��u�S8g^�|��z��c+d��j������[q& �P7� ��?���Ec������h��@�x���l@���@��k���g�5�`O9���K5g�u�f��8p���@��u�����o�p�w4V�
 ��?^<�yq6 @�d `���/���O4�`:�DN?�\�t]���u+�D�&��'@���h���7����U� �O�^��P7��!��������`mR$�=�R�t]���u+�D�&��'@���h���7����U� �O�^��P7��!���U&^W���^\ ��Vs]�nv��3@G���>@�	P7=/���
g'@c��������g#��M���0�Z�����o�E���(Ts]�nv���@��u3&�� �@���������� @c�S@ �/i��� @�����-X%��X�"<t���e��3��u�kN�����1	�F�&@���h�vm�pV�@�"�ix�H�� �@�f�,p�����^^�"<n�r��=��A���]s�,@ &@��I�7 �5���Dc�k���:�X��H#��G >F:P7;�0E�`�G^j�y�4����D~yD��3��u�kN�����1	�F�&@���h�vm�pV�@�"�ix�H�� �@�f�,����xA��p@�"�9�R�tM���5'�Bb���#�]�nzN4V��_8���� L@�4�x��c@��u�Shji�13��"\<�O��Iz�fz#�@�P7�k0F�P7=#���
g$����C �@
^<R�� �@����C,0qV���kU���^�i�nj� �u3�g �����5#��������{�3�XM��!@ �/)p�H @�L��!���:y����#�d���j� �u3�g �����5#��������{�3�XM��!@ �/)p�H @�L��!X�D����&�{�������Az�fz#�@�P7�k0F�P7=#���
g$����C �@
^<R�� �@����C,���&�}��p�-����j� �u3�g �����5#��������{�3�XM��!@ �/)p�H @�L��!���ur��U*�
{���Uj� �u3�g �����5#��������{�3�XM��!@ �/)p�H @�L��!5}e\��O�-��q��$�n&��@ �u3�
�@���M���j�=�')h����#@ �/	P8���n���#8��Z����*���z�����9�����>|�t�nva���nz>4VS�>M"@c5	�@�$�x$��0 �D�����,p�����[�*��F���;��9�����>|�t�nva���nz>4VS�>M"@c5	�@�$�x$��0 �D�����,���F���5*��v)�	��9�����>|�t�nva���nz>4VS�>M"@c5	�@�$�x$��0 �D�����,����e�]�*�m6-���X��RP7S��) �Q���Q�9 �Z�����XM�O�4���$0F������ �@�f#`��������kU�=Kd�����Aj�fj>E:
P7;�0GRP7=���	�&����� �@^<��pH"@�L�a8aF��miSQ�|V����P�$�n&��@ �u3�
�@���M���j�=�')h����#@ �/	P8���n���#���j������W.C��9�����6|�$�n&R� �\�����XM�G�$���8|�$��#
�@���8|����?X/O���"�O9b�j� �u3�
� �����T8�$�nz64V��>I!@c5!�	x�H��!@ �u3!`���_\#�>��"6�D�V���P7���	 �H���H�c �@r��gCc5���4VS�� �@��(BRP7S����Q�\��^E�����+��Ar�fr>A	P7�pH.@��lh�&�#|�B��j
>B����C �@
�f
>B�`��Mm2����O�7g�X������ �@2�f2�#�����������ih���c@��/@�"�i��i���N��F�ZU���Q)�{�9�����.E�	P7��pH,@��\h�&�M#@c5
#�x���H#@�L��,p�_�d���9G��[��9�����.E�	P7��pH,@��\h�&�M#@c5
#�x���H#@�L��,0����7�G�]*�+Ss����]8�$�n&��8 �X�����XM�?8�F��j >F:����) �F�����0X������T��.��GU�9�����.E�	P7��pH,@��\h�&�M#@c5
#�x���H#@�L��,�������RnTU(�O�Rs����]8�$�n&��8 �X�����XM�?8�F��j >F:����) �F�����0\`���q.��'n���u��	G@�T��T:|�t�nz&4V;�
�tA��j�8h'��G;� �@��]@��|c�|Q��"�j|/�����Ag�fg� �����t��,@��Lh�v�����. q
 �N��v@�.P7���),p��:y������d��R5g�Y�����# �@*�f*>C:P7=���G� @c�H������C@���. q
���Y��IEx��K�����Ag�fg� �����t��,@��L�n��X�B^y�����[�n2h� q�n�a������K���^���j:t�{Meee�3:�/_.�?��8��j��d��v��7�����������O>���Y�s���������Y��a�����?Bc�{F �@Wx���� ��P7��`������Y�xw�
}��e�W�9�����&AR	P7S�� �Y�����Xmll��/�X���?v���Gf��%�&M�������O<Q|��N���7O����x[[�\p�r�UWu��9��9nS���w�y�L�0A������9;���<��#��o���H�����h�va����#
#���@�"`�����e���*���B�v��3�,@��l�@ �u3��!���������SO=Un��7�m��V:� Y�v�,^�X���+��5�\#g�u������8@�z�)��!�"�G}T�}�]��
7� g�q���\v�er��������>��#�7J�,Y�;�������r���<��c����&�l"�~�|���r��w��8�xu����O��%���CSh����#@ �/	P8���n���#,5}e\����[6(-�;��{����@��P7���9 ����M�����s�='{�������e������V���;L5=�&k����-�c�9���i��r�)�x��52z�hy�����\����������c7�tSw<n�8�;w�z�������.r?{��d��ww������6����!C��O<���?����uNt�;u�T��?a�O=0���j >F:����) �F������@��[j��/��H/=�\v��D��P7�=�!���������nz�5V���
���K;5Ac�w~����R���m�<�;�X�)�|[��w�q�����'��f�m�N���/'�|�;v���|c����g�I�������Go�������?^x���gN#u���w�N�t��Q�8���'��7��~��������u�����:��Mc5��#���x�{0C�	P7�	�9�\�@�<�z�
��z�a?��������@�t��tB|��P7=����M������V���;����V��}3���Iz������3�W��U��d��a�7]�+��T��� u�#F���z��5�&��AKK��$�}����_c?���2|�pw��k����#��4V�	�9 /��G�3@ �u3��#`����\#���Q���������9�x�f�3@ �u3��#���M����j|�;�~�a9����b����bu����_��?�|��������}��	��vq��z�%�t����C=�=����A��G!���������3�t����V������o����NJr��j#�Ix�H�a@ �u3	��H����r�_�U�[�/��N�Ts���xf �@:�f:!>G�����U����f�u�]���_��Q�������*;��c�n�v���S����Y�n��]�V����������3�t���������{��Z�d���|c?���#��{���������EEE���v��^(a���������� �@^<��pH"@�L�a,�^�*�][�"�^\ ��Vs���xf �@:�f:!>G�����5�U�ay�I'�����F��}�	'��{��WF������:`�O�����+��v�{���^e��6r�w�q�{������o���l����$��\��n;y������O�o���5����
q��4U��j��K��i�&@� �B��8|�$�n&@�
���Z��T���Y)Uz���� W���F@�	P7�yq6 @�����U�����/d��9n�G}��u�]�_���X�c�����J����>�
.\(c��q���iu~�i������w�������?��c�|���C<���c�,���2e�\{���g��4v?��S�w�:��5��u\K�9��d2G������ �@2�f2�#`������������S.?T����n~o���u�+J��|/@��,�o�644�q�'Nc��s�!������RO�����Q���/W�Pu������&Mr9M�����|�m���k�k�x�
2d�{(��[c?
x���2o�����q��������"����M7���,>F@@@ s�G��-�|R�n����{�Uj�@@�	�����a��6�����_�a�&/���x��'��#}�w��l�2�a��c/���:4�sg��H��.��=�����Xt��Y2y��N�8�Wu��a���K������G���M�;V�o�����9S�>�l	s}��Hr��j#� � �&�������>�~[m�Z����3@@@b4Vc���;��O�S�G�:�;����+�����Nw���o���u�����w:��s���9p�@�����c�/���.�K/���5��w�8
T���+d�M6��}��sOy��g;]���_K�~��������:-(�~p#�I�QI`8�$�n&��0�	���:�v���P�x�B�vb�e
]���5'�Bb���#�]�nzNF~c�����q���T��������O�"N����V)**r?q���S;���nT�[�,p?>��#�����]w�U���w������g�v���g�?��Uu����q~WkUU�� \�h�s�1����b4h���>��]���. q
 �N��v@�.P7���)X ���&cfT�E�x���`����	u��
@� �[�����@�r����k�:?J��������F��C��#�n���:K���:�	�����F�s����c_����,c��u�w�=��QG��cMPw����]�~���^��'������{o����8Q�7��u����'��o��������Mc5��#���x�{0C�	P7�	�9��>�F�Y�����^�y�nj���n�@�M^��P7�=`\c����W����?��L�4)�n�z��e�M7u?w���|;��3f����[���D>��#�G���n����?���R�<�������q��n��8?F��?��466����~��9���^�!C���8�?~��-���oW�#��{�!��m������.p�s��z��g�k�\�zh���8|�$��#
�@���8|��e�{g���~��z���d����]�2�&��'@����� �u��F5V��d�^����hW�\s�5�|4�'�����i�����{����g?�Y�c���?��9����/�X�����k��������:��j+���U?�x����|��{��q������&��XM�a@ �/I`8�$�n&��0
��d���|���������ej���n�@�M^��P7�=`Tc����m�Q�w��Y���[c9�xu�5kz:����s��;-��g�y�����Zc�o���7��)S��������1��7c�,Y�����+���m�}��$��%zv�c4V�k0F������3@�������[������{��[���V�9O���N@�	P7�yq6 @����Q������������g�}&p�_QQQ��;�]���n���#�c?28���W��e����N8p`��j�{�����m?���^�1 �^���F����n��`����|�N��y�B�]^(7O�Rs�u�����n���l@������[�H��jFl\���aq�	2�nf��E+0j����n��[J����>�n����
P7��q>�.@��v�U��%d?����������8d(@����0T��ske�W�UtW���m�9�&��'@����� �u��4V���������,�����:d$@�����0V`�}�����*��?+�;��9��@����~�8l�nz;�����2���j�p\��
��am�	2�nf�e*p�s�r�SkTt��]&��@��Xe �~x��+�� `�u��4Vm���a�4V3��2�V�kSO� ��u3C8.C�P���7����W�
�M�����h��@��o��|�]�������K�0~��qX+�����'p�P���!�!`���u�r��]��Y8���3���@�
���W��@�v���h���/!��i�f�e `�/����@ C�f�p\���'����-m*�9S�d��B5�}@��}?��n��|�]�������K�0~��qX+�����'p�P���!�!`�����>]�"���r�y�5�}@��}?��n��|�]�������K�0~��qX+�����'p�P���!�!`�������W�U����CF��S�mP7m���~��~�8l�nz;�����2���j�p\��
��am�	2�nf�e,���52��F�^����?/Ws��M�w�#��_��_1�G������j�������!�!����xX�zG����q���E.]P�"��HfN�Ts��M�w�#��_��_1�G������j�������!�!����xX�zG����q�nj�qWW�E�xZ��������'v�D����� ����M/�4Vm�W�E�4V���R�R�+�N� ��u3<.E�`�	��H��V����2`�"5�y@��9����P73Q��Y���e�����
����jx\�V
��ae�	��nf���,p�u���-*��Gn {m�]�mP7m�>�#�@&��L��l�nz���j���,b����"����xX�v�F�,��Y�q)�����?�T�#�,���-Ss��M��O� ��u35�A���^�i���� ��i�f��� `�/V���@ �fx\���O��$����"�yP�\pL���<�n��}bG�L����q
�,@���Oc��Y�Nc5<.E+x��2��YP7���R���u2u�*a��B���*5�y@��9����P73Q��Y���e�����
����jx\�V
��ae�	��nf���.0j���o��[J����8�n��ubF�l����q-�(@���Nc���@�4V@� `�/V��`@ �f��C�����W������^�U�njn���ik��2�nf*�u `�u��<�U[�d7��,�������0d)@����0X��w������"�xp�0�T�mP7m�<q#�@���L��l�nz���j���,����% �#��u�xX�rF�,��Yr9���Q=�FE8b�R`���:�n��y�F�L����q�*@��2Oc��Y�Mc5K@.G�x��.��Y
P7��r������E�*�m7+�+�T�������'n�T�����!����M/�4Vm��e�4V��r�N��RN� ��u3K@.G�`�/j���jU�=Kd������u���7d*@��T��@�V���y����2n�Yr9X'���u)'`�R���% �#`����+�"�wv�T���mB��-����
P7��z�M���e���m;?�xi��m@�^<�I5�"�@@��� �
�
L�_+�w�������~T��6��6f��@ �f6z\�6
P7���X�q�3���X%���U�&X@��"�@�`�����^kV��iO9|�jn���ic����nf��� `�u��:�Uw1�X
�[ ��U�xX�n�E��� r�������U�����������u���3d#@��F�k@�F���u�6��b��"�@�x��*��P7@�,��G�����*���H~?�R�mP7m�:1#�@6��l��l�nzY��j�� f� r�J���M� �u3Dn����
�r�55q.��'nn���i[����nf+�� `�u��8�U�v~@��X
�� ��5�xX�jE����Ar{u�46��gM��V��m��m'^�V���� �#��m�M/�4Vm���Kc5 Hn����aM�	�n�m0X���u��G-*��F����K���u���/d+@��V��@�6���q��������$�Akx��&��	P7��6,p�c
���M*�Q{��c��Ts��M�2N� ��u3[A�G���^�i�������j@�������T($@��� `����5���7��u�L=�B�mP7m�8�"�@���l�l�nz��j��(^�Ar�F�kRM� �u3 Hn�����w�\0����e�Ujn���i[����nf+�� `�u��8�U�v~@��X
�� ��5�xX�jE����Arhji�13��"\<�O���	u��l+!@�B�{ ��M�M/�4Vm���Jc5@Ln�V��aE�	�n���0X���k���V�U�{�?���6
��6e�X@ �f��l�nz���j��0V�br+�B�+�L� �u3@Ln����]T'/���"�tX�R��6
��6e�X@ �f��l�nz���j��0V�br+�B�+�L� �u3@Ln���y�A�y�IEx�n�r�O����u��l+!@�B�{ ��M�M/�4Vm���Jc5@Ln�V��aE�	�n���0X������{V�wX,�W��6
��6e�X@ �f��l�nz���j��0V�br+�B�+�L� �u3@Ln�����\/g��UVnP(���Rs��M��M� �u3E��6	P7�l�X�i�+��1�X!���i&HP�� &�B�p�Q�W�Ex���e����c6L��6d�@ H�f���l�nzY��j�n�A�4Vs��-@�h^<�N/�!�@��9@��*p��Z����*���T�����-��-�&NJ���$�A[��^�i�������j�������� ,@���!`��5������U�'�S�����2�n��i�D����AIr�E���e���-;>�8i���@�x^<�O1"�@����A����Y�D��p���tp���2�n��i�D����AIr�E���e���-;>�8i���@�x^<�O1"�@����A���A�����*�-7.����Ts[�M[2M� �u3(I���P7�L�X�e�'���A�/����)&@X��0(�C�`����2��a��Y8����2�n��i�D����AIr�E���e���-;>�8i���@�x^<�O1"�@����A���0�Z����(o�\%�z��
��
Y&FR���&�B��^�i����s#���rK0Z���Kp ��fP�%\�`��g�:��G���[���
��
Y&FR���&�B��^�i����s#���rK0Z���Kp ��fP�%��H�<�R����}{��={��
��
Y&FR���&�B��^�i����s#���rK0Z���Kp ��fP�%<�r��{�AE���%r���jn���iC����n���@����e�6���Hc5���������@���Tn���o�h����7�[$��V��6��6d�@ H�f���l�nzY��j�n�A�4Vs��-@�h^<�N/�!�@��9@��,���&cfT�E�xZ�������&>Z���(�C���^�i����s���r[0V�cSK` �#�f�`�-L�U#+�ZU���K6��M�MP7M�0�!�@����E��.@��2Lc������h����"����x�ZC�	P7s�m0X��;����[T���y���}���>�n��a�C����A�r?0]���e����;=G��X�,�Ecx�06��9�n���"`��mO4��/4���R9qx���>�n��a�C����A�r?0]���e����;=G��X�,�Ecx�06��9�n���"`�����d��
*��[���jn���iz����n-��@�t���a�����Gc5G���������H���#Xn���}�N���JE���Pn�E���>�n��a�C����A�r?0]���e����;=G��X�,�Ecx�06��9�n���"`����+�"�}jo)-.�;f���ijf�r%@���,�ES��^fi����s��s{0N��RJ@ �c�f���=�
�uS�|��z��'U����������%6��u3��L�nz���j�.�al4Vs���@�H^<�L+A!�@��9���,p�����[�*�SG���v*Us��M��Kl ��f.T�'�,@���Kc��]���h���[#����x�V�B�
P7s���0X`���r��kT��\*���L�MP7M�.�!�@.���P�� `�u��.�U�wyc���C\n�F
��adZ	
r(@��!.�F�`��k����Wn=��\9����<�n��]bC�\P7s��=@�d���]�&���Fc5����������P���C\n���_�j�I�kT���d���jn���irv�
r!@���*�D���^vi����s���rk0R�#�JP �C�fq�5��0�Z����(o:�J�lP������f��@ W��\�r_0U���e����;<�q�X�10�G�x�0.��9�n���#`���������W^x\��4�D�MP7M�,q!�@������� `�u��,�USwx�����c`n��	��a\J	r,@��10�G�`����'_mV��S��I57u@�45�����n�J��"����M/�4VM��9���j���='���q)% ��u3����������F��;��Y���������%.��u3W��L�nz���j��q\4Vs��@�8^<�K)!�@���9��,��G�r��z�f���V�������%.��u3W���	�$@IDATL�nz���j��q\4Vs��@�8^<�K)!�@���9��,���M�]]��i}��&N��&f��@ ���\�ro0Q���e�����;��h����#@�(^<�J'� �@���y���FV�nU^sz�l��H�MP7M�*1!�@.������ `�u��*�Uww1�X
�G ��Q�x�N�A���! ���/u�ly����#7�=����&��&f��@ ���\�ro0Q���e�����;��h����#@�(^<�J'� �@���y���y�_M*��{�����������Y%&��u3���L�nzY��j��!&�! �0J���I0 �u3d���O��$7<��"�e�b9��
57q@�41�����n�R�{#����M/�4VM��!�Dc5d�F	��aT:	B�n���#0X��/���oY�"�WU(7L�Rs�M�JL �K�f.u�7�(@���Jc���BL4VC@� `�/F��`@ �f�<�FM_��S{KiqA�1�&�M��I, �u3e��&	P7�l�X5iW����y!���i$Q��"6�B�P��7����*����K�����6�n��Q�A�\P7s-��@�4���Q��������4�Acx�0&��!	P7C��1,p��:y�������Ow,Us��M�2J< �k�f���?�&@��2Jc���R<4VC��1 `�/���@@ $�fH�<���L�,^�FE8b�R`���6�n��Q�A�\P7s-��@�4���Q��������4�Acx�0&��!	P7C��1,��;�r��z�v���'T��i��i%��u3���L�nz��j��)�!A�0F�cRI  �u3$h����W��)7��{���s{��i��i%��u3���L�nz��j��)�!A�0F�cRI  �u3$h����������_VI���q�L�P7M�$q �@X����y�"@��2Ic��r4VC�q y^<"�B@����!��88��Z����*�KN(�!����I��I�$C���2�@���^6i����C���j��<
�����4�(@��G!`��u��3�7�O:����jn���iR6���n���3@�$���M�&��c��"6�B#x�0"��!
P7C��Q,p�?��m�hT��c�L>�\�MP7M�&� �@��0�y�$@���Ic��]b,4VC��Q `�/F�� @ D�f��<
�^]�,W��^E8��E2��J57i@�4)���aP7�P� `�u��&�U�vu���X
�G!���x�F�@���!b�(�Y�*����p��>qsS&�MS2I �u3,i���P7�L�X5eG�����yD^�����@ d�f��<��^]-�Mm*���*�UEjn���iJ&���n�%�s@����I��������28�C������,@���!`��%���[���;�\v��D�MP7M�$q �@X����y�"@��2Ic��r4VC�q y^<"�B@����!��8��h�<��IEx��2z��jn���iJ&���n�%�s@����I��������28�C������,@���!`��c/7��7�w��D~5�\�MP7M�$q �@X����y�"@��2Ic��r4VC�q y^<"�B@����!��8x��u2��U*��}
�������u��L�%@�K�� ��)�M/�4VM��!�Ac5dp����#�)$Y��28�C�`���63�:.������M�P7M�"1 �@���0�y� @���Hc�����h���G"�@�x��t�X<�A���t�������oV��g��Kn�M�MP7M�"1 �@���0�y� @���Hc�����h���G"�@�x��t�X<�A���t����{W���^��p��e���jn���iB���n����@����E�&��<�@c5�<"-��G����@ ��<��HX�T���\�����Ke��ejn���iB���n����@����E�&��<�@c5�<"-��G����@ ��<��HX�V�\{o��p��b���
57a@�4!���a
P7���Y `�u��"�Uvsb���t����#��c� ��f�y$|��:9��U*��
e�YUjn���iB���n����@����E�&��<�@c5�<"-��G����@ ��<��H5}e\����[6(-�;�	u3��c� ��f>�y&DY���e��j�wq�Nc5��<")��G$���@ ���<��h���ZY��z��c+d��j�u3�d� �u3lq��Q�nz��������X�<�E��
�����p��u3O�<�f�W/����"<���r�.=�<��f�3��@ l�f��<�.@��2Hc5�;9O����'x����#��c� �'�f��y,��|�����O������y����g��#�@�����yD]���e��j�wr��Oc5O�<"+��GdS��@ O��<��XX�~����z��M���'U�y����g��#�@�����yD]���e��j�wr��Oc5O�<"+��GdS��@ O��<��X���U��U�"�^\ ��V����Q� �G����a��<��u�� �����<���j��y,DV������#�@���y���.p��jY������U���P��<�nF9{��!@���:�D�(P7���X��.���i���G#�@$x��d�X4�Q���G|�����V��t���������%j�u3��c� ��f>�y&DY���e��j�wq�Nc5��<")��G$���@ ���<��h��P�<�J����}{�Q{�T�(��Q�kG�|P7���3@ ��M/{4V�����v�y��� I^<"�6�y�n��G#`��CK���GU�{nW"�<�\��<�nF9{��!@���:�D�(P7���X��.���i���G#�@$x��d�X4�Q���G|���o�h�K���+��*�<��f����@ ��|��L��u����(��<���j�y4DR��H��E#�@��y���,���M�]]��i}��Q�P7��9����n�K��"�@T��^�h�Fu�y�4V������#r)c� �g�f���0X`�u5RS��"��i�d����<��fT3��@ _��|��\��u�������<���j���@ r�xD.e,�,@��sx<���u��-*�)G���mK�<��fT3��@ _��|��\��u�������<���j���@ r�xD.e,�,@��sx<��
��?�T�G�Q*c�+S����Q��F�|	P7�%�s@ ��M/s4V�����n�yN�G��	�����`��u3�	��,��M2�o
*���,�GW�yT���f�u#�@������� U���9�Q��y^7��<'��#�@�x��\�X0�Y�����x���u2u�*���
e��*5�������n��u3_�<�*@��2Gc5�;8�������x��/�KF�<P7����������������� �X�&���e��"�@������G��	P7���X����d�4V5I�@�����T�P�D���I"X�
L�S#��lU�M�Ko�M��8�nF1k��)@���>�F�(
P7���X����`�4V5HK@�H	���t�X�@���AX���z����*��F���;��y��(f�5#�@>������ E���5�Q������I`	 )^<"�.�P75HK@�`���4�]��Q�K�L8�L��8�nF1k��)@���>�F�(
P7���X����`�4V5HK@�H	���t�X�@���AX���f���z�6��oN�P�(��Q�kF�|
P7����@ ��M/k4V��{5X3�U
��@ R�xD*],4�nj�����_����7��{���s{�y��(f�5#�@>������ E���5�Q������I`	 )^<"�.�P75HK@�p�Q�W�Ex�YU�{���cQ�P7��-��:P7u�k@�(	P7�l�X����h�4V5JKA�H���4�H�H���Q2X
�
L�_+�w��n�q�2t`��Gm@��Z�X/�[�����|��u������\M�KcU�D���/�IEM���$�e `������S�5����S�����Gm@��Z�X/�[�����|��u������\M�KcU�D���/�IEM���$�e `���^#��F��!%2��r5�������^��u3��� 5���1�Q�������&�` ^<"�*��P75I�@�`��?j�+��7�A��a|��Gm@��Z�X/�[�����|��u������\M�KcU�D���/�IEM���$�e `����V?�&.�������4�nF)[�t�n����Q�nz����]��Zi�j������#ib� ��uS�d�{u�46���;�R��.R�(
��Q�kE��:d�5 �@���^�h�Fi�j�V�%�� �@$x��D�X$h$@��(,�.]X'o~��"<��r�c�5�����l�V�A���CXDI���e��j�v�Fk���Q2X
DB��H��E"��F�M���R0X������T���.�c���y���(e��"���M��@ J�M/[4V��k5Z+�U���R@ �xD"M,4�nj��������$s���"�ep��?�B��4�nF)[�t�n����Q�nz����]��Zi�j������#ib� ��uS�d�x�������T�U�����<J�f���Z@@��Y`
 %���-�Q������F�`) 	^<"�&�	P75JKA�p�Q�W�E�xZ��yT&���d�u"��.�M]2�:@ *�M/S4V��c5['�U��r@@{^<�OD����%�� `���j���V�U�{�?���QP7��)���P7u��@��P7�L�X����l�4V5K�A�x��>E,4�nj������[T'K�mQN:�L�)U����Q��D]���d�u �@T��^�h�Fe�j�N��%�� ����xh�"��	P75K�A�`��<� �<��"<���r�ej�u3*�b� ��uS�L���u������X��IcU����^��S�@@3��f	a9,���ke�=�U����X.;�B��2�nF%S�t�n��	��Q�nz������:i�j�������}�X h&@��,!,�>]�^��S�"�(+��gW�yT���d�u"��.�M]2�:@ *�M/S4V��c5['�U��r@@{^<�OD����%�� `����+�"�����AiA�1�'�M�3��@@7��na= ��u���U�w������ibXh+�����aa ��uS���,8w^�|��z��'�����y��(d�5"��N�M���Z@ 
�M/K4V��[5\#�U
���@@k^<�N�C
��&�%!`�����%o4�O:����j�u3
Yb� ��uS�l���u����(�V
�HcU���$�Z�����@@C���IaI,p�k��'U���O��yH��Ga@��B�X#�$@��)�� @���Dc5
�U�5�X�0),	���C���8�P���aRX��a����*�-��U'W�y��(d�5"��N�M���Z@ 
�M/K4V��[5\#�U
���@@k^<�N�C
��&�%!`�����2��a��Y8���Ga@��B�X#�$@��)�� @���Dc5
�U�5�X�0),	���C���8�P���aRX��0�Z����(�?�R6�,Rs��M�3��@@7��na= ��u���U�w������ibXh+�����aa ��uS���,�h�*���u*�������������b} ��uS����]���e����;U���X�41,���C���0�T���ibX��H�<�R����}z�1{�Ts��M�3��@@7��na= ��u���U�w������ibXh+�����aa ��uS���,x��&��p��p�mJ����j�����{�X�&@��-#�t�nz����N�t}4V5M�Bmx��65,4�nj��������E.�s��p�
���Uj�����{�X�&@��-#�t�nz����N�t}4V5M�Bmx��65,4�nj�����M-m2fFu\�������<�n����:
P7u�
kB���^vh���K5^�U����@@K^<�L�B���'��!`���Y5���UE��	�d�~��\�uS���6�Q���cVX�,@���CcU�]���h�j���Z
���eZXh,@��89,
����N^}�EE8��e����j�����svX�(@��1+�	t�nz�����.�xm4V5NKC-x��2-,
4�nj������=� ����"<�'�2vx���<�n����:
P7u�
kB���^vh���K5^�U����@@K^<�L�B���'��!`�����d��
*��(����Ps��M����@@G���YaM ��u���U�w��k���qrXh)����iaQ ��uS���4���ur��U*����r��*5�y@��9;�
t�n����:P7���X�y�j�6�'��!����xh��P75NKC�p�Q�W�Ex���RZ\wL�	uS���&�Y���svX�(@���BcU���5�X�@�X"h%���V�`1 �f��0T���k�������[!�(Vs]�M]3��@@W����a] ��u���U]w������y�Xh'���v)aA ��uS��<������[�*��?+�;��������a] ��uS���.�U���e����;T�u�X�<A,���C��� �\���y�X,~�Q����;u��#6Ps]�M]3��@@W����a] ��u���U]w������y�Xh'���v)aA ��uS��<x��f���z���d��^j�����kfX�*@��53�t�nz������|]4V5O�C�x��.%,4�nj� ����_�j�I�kT���d���j�����kfX�*@��53�t�nz�������O����;�84hP�}�t�Ry������Z�*N���2�5��/���^V�X![m�����n��������V�|�I���d�
7t�<x���.���Z��T:|�t����	G@�T��T:|��8aF��miS��3�J6,O�����yP7��c@ �������#�@������7�|S��~{7�x@=�������FN<�Dy��;}>o�<?~|��mmmr��UW]��3��9s�H�n�:}v��w��	����/����N;�#�<"}���tM�����h�va����#
#���@�"�@���Z+��^=��c�e�-J�\�uS���&�Y���svX�(@���b|c��/��=��C>��C7�d��u��� O=��{�!�"�G}T�}�]��
7� g�q�;�����.��/���:M�}��G�o�.Y��=v��G�]w�;�������:�o��&r����������=�|����k�>}�ua�O=4���j
>B����C �@
�f
>B����P�<�J�z������{�Ts�M���@@g����am ��u������D�
M�X]�h�s�1��-��"��r�;^�f��=Z�������/���=��1����M7��=o��q2w�\�������E]�~��/������[[[e�m�q��C��'�xB5P�q�����|v����5��Z�z`���4@|�t���S@ �u3
#�@N|q����F����/��^��:��:f�5!����M����@@G���#���Fu����������^{�s�=��~�w�y'��O>�D6�l3��������Ov��7U�o�:>��3����;v�����-���������,X�~�4R��w�4KG���c��8q��|���|������#��b�H�7��tB|������H'@�L'�� �K�e��e���G�W$3'T������YaM ��uS���6�Q���e�����O?-������{�����v���'j�655I�=��g��!�����q��6�������u~���i�:��#F�C=��tw|�W���^��[ZZ�&i��������'��������7]�\_l�����N��@�x^<�=�!�������r)���M�]]������u=qh2�nj�����nF&U,4�nz�0��:i�$���#G����:�L�O���+��"��Gu�8��������������x�~����������=����%�\��tw�����������:h� 9��#�o�������3�t����V������o����NJr��j#�Ix�H�a@ �u3	�@ 4���������y3'V��
��\�uS����]���{�X�&@��2bdc��=�����B����W�l��������������u�����S����Y�n��]�V����������3�t����������Y���%K��q���{��G�=����tw������j��[/��B	s}�����$0F������ �@�f#�@h���N�-oQ�;{���6��\�uS����]���{�X�&@��2bdc��fK�X���{��f����}��x�;w��v�i����zill��6����q�r���v������m���=������(�m�����[r�����7����@EE�8�p��Ns5��%\P��4V�pH!��G
>BP7�pB���
�����3G�Y*����X��
��%�� �@$���H�D���^2h�~��x�b9���]����J����i�.\�P���������������}���1����?�X6�|s�P�G<X�<e����k����Nc��O?u���;_�\�ZD���X�������� � � �DS��O���e���l��A����h��@@�@`��w�y�4V�%n��v�/_������o�:�����4U��_�~�m�������y��7d��!����n��(������y������o��~wk��S�H3�����@@@"-�����y����	��G����g����#� � `�������G/[�Lv�a�i/���:�����{�E�������c
�Y�f����;]��^�a�����.]*NBG�-w�u�$����o-..v��9s������	�$E�(���{�@E��FA9A�e���OY]��`A��u]���E��O]�D���k��q*7��3Lw��/#���������������++2*3���ov�;"?��������n��
,��F1��
` �Q���������O�(�M�4��[>�������^7{��\'�" nf=a�j��������o���^{�����CLtn��f���c������O>9�t�Ic�s��	�����m�Q�g��w���o�|���sX������[;y}c.�A��j�h ����b47�(&@�����tx����s~��k��^:����6��n�
�B�@/����K���n7���XM�/_�L�����!�N]�Uy6�G�>��t��.�����N;�y��������|$�q�i���'�H�����Y�������k����9��s����~��b�r�-;z}��X�������'@��h7�=|"@������	�O�@'�|�sa�]K����~k��w��~��
q��z�� ��f/��k$@�����7$VGF�G?�����=M�>��c�Dk������_��_��#�L�����$r�!�v%	�~H�ghh(��`��p�QG��~����x�
7�0���w�����V���W��qv�C=&M��������&$V���E��:n<��("@�@q�	�]tL��W.
?�j�z�}w���g���n�7��7\�  n�B/�F�I@��zCbudT��Hg����~x8��������<�.
|�}��I�|0��e��������Gy$l��6!.#���E���;,���w�-�����.n�����}!&Ug��.�����n������N;-|�3�I�����s��7B���UO�dCb�	�]�#����"47���E�@���{q��/��o���N9|N�s7m�������^7{��\#�$ nf�!�Z3*+�B+E1z���V>�������o}k�s��]�7~^�;'�xb8��S�������N���Y�k���
�<�L�?~��MozS���~f���~��O���r�f���t�#@��X7cM� @�����L�>:%��S��qg>S=���I��O�����6��n�
�B�@/����K���n7��(Eb�����f�J[����4����
��7���t�h%�+��������g������+�%}����+�F=��S�q�W]���/��e~��������8{������|Xs�5G�W>t��*�k�.��HF9����������F2�	���_��Q������Zc���n� nvC/�zI@����r�t�����B)�y\\������>�hx��^���2e�Jg�������n�Dpe��f_\�pa��������m�Y��j�1:y}�����X���M�����X���7k5l 0��p�3����U/���f��7�^��-�f���� @�W��^�)�I�@���YOH�v������X��s�L���	�@�@�	��=�a.�@��~��p����-<��3��v��~��
q�[z�u �+�f����$@�[���'$V�eD��uH��X��\&\����w� @�����0�K��]?����jw�rZ8��9����!nvKO�zE@����r�t�������j�������0�K�������.p�����c�r	X���/����Q-��<c��sg�}_�f�O�o�>��%��������=��	�(q3��X������X��t�t\��G�����7{�]>�	<�py8�������SC���}��]�����R�N�
��NI;E7����A�@���LZb�S#�`��X-X�jmp��vb' @�`�f�:Ts�����{.��kI�V���i����[l�d['�%nN�S ���fOw��'@`��]bu_N)�Z�^�:)������E�@��"��6(���,�_;��u(,Y��m[n8%���3�k����R���m@uH
- n�{5��6����jW)�Z�^�FZ)������E�@��2��6�M��������7���7l�zkM����}_�1���a7v��+ n�eQH����fF#��p���L@b���}+��c��47���G�@�����p����''Xg�O
��8#��sXs���]���6Z&@���fA;V�h�����J��m������_�#@��n<Zo��[@�,v�j��	��������6�����,��:SZN n���	(���Y��<Z. nf��-Z�8��j9�Y+	h����Y:�7���ZI�h�_~r�@���-n��Wo>-�k_x�&�{�����N�7��( @�@Sq3��Xm:L�l$ ��HF9����������F2�	���,X�.������������K��������}
���qsU��#@�@& n	�' nf^�����#���	�����6�Mc��",�H����y���$��������~;�������OjT�i�����N�7��( @�@Sq3��Xm:L�l$ ��HF9����������F2�	�U�+nLf��_��	}IR��;�����5�a�z;��z*� �X@�llc�	�����j���l��+%R���x����+7WJ�=*p����I���X���o;=�}�����S����7+�	 �j���9�E������IH�VF��\���T&@�@p�a @ �����KmzO��'���[�����^�65-���0w��M���My�$@��qs�473������F��d� @�����.J	 �H@�l$����	<�hy���������������p����o~u_�:�f]�h( n6���u���Eb���P�2���	�O���n<F{�D���	��+����	-��2~z�@x���
�7g�������{M��7�ZO��R� @��*	�������fF!�Z6�H���R��R�r
��-'��J��{���^�(��������<zu�d�������9��fC); P_��f}�h$ nf2��F����My�$@��7cH @�������NJ"��?-
�_�(\���-�i�ia�u
�
s��mZ�N��o	�' nf^�����#���	�����6�Mc�/�vy�����?�R�CK?�u�5���^?�����l��
������
���Fb�������j3� 0V���X%h& n6�����
,?�q �7�Y��9���=9�s_�k��0c��a-��v @�����z*� �X@��l$V�{�H�6���u�x�AQD��&�f� �\~�`2�u0<����a��?)��������a���� @�@�����Xq3C�X]����X���&J �L��G3� 0V@�k���n�oq�0I��~�����������6\gJ��(#@�@��o���5���73@���He���jY{^�	������e7����M��x.���p����������~�i��]���6���Pv Px����b
$@���f*����U��I�������V	��h��� Pq�,=���J�77�z���y��
�3Y�6y��p`�`}�+�UQN��BT����s�N�#@�@���LRb�U#�d��X-Y�k.�-��c�	���	��%�p�%@`�V���K��/o��yvy���3gr�o���Y�}������ @�@�V��Ek�� @���f&*����U��I����5���	��h� Pq�$���L�Y�����p����?-kx��$���f�w�������(�@��Y�6jZ) nf���U%:��j�:[S	h����0:%7K���J�@KV%n����4�z��K��s�m�����6Yj�zv @��V%n�r�\;Z- nf���Y%9��jI:Z3	h����Q:%7K���I�@����'�Y�Of�^q�PX���%l�W��A��s7����=�Q�<q�G���	 �Rq3��Xm��*��$V���ZJ�@k�x���Q(���Y���RZ#0���pp8\r�@�����`Q���n���d�����W���b�] 0����� 0a�fF/�:aC��O,������	������;#�- n�v��z:/��q��7����=�8�:g��a���H���Y}�:�Hg$@�@V7n��R�=! nf�$�����.Rb���� ��n<��\�' nv_��"�[�Uq��?,N��:�|��sXgL���nF�LpX���
�� �@�Uq��� @�p�f������i��jg�������(N_j	�7;��,G��q���/M���;7E�i�i���g�-6������6�V��nk��!@�@���LTb��#�$��X-IGk&-p��2J"@�$�fI:Z3	h�@���_,O����Cap�p���r�)���a���7�c�I�]q����Z �Jq3��Xm��*��$VK���J�@K�x���A(���Y���TZ"����hh8�"y���
���dk���kO�����/���9���� 0�����BW@���
�����jk�Ui�&�Z���PZ$���E�C�@i���t�� �"�N��+nLf��_���g�O
��8#��sXs���6����	�d���F:1Z( nf��-Te:��j�z[[	h���V(:e7����J�@+&"n����p�u���?.i��=���uf�p�)M��I��N
LD��d����73Q��V���Ob�$���L��G�(�����%�h�$@�e7}rY8��E�7�,n�������/�j�am
e'�����:	Z, nf��-Xe9��jYzZ;	h���VI:e7����I�@��!n>�hy�������������M��%S����^����h�@7��v���	 �Jq3��Xm��*��$VK���J�@K�x���A(���Y���TZ"�Mqsh�p�����9�a����o�9��~;�%�b���'5�g�!�Mq��sL�Z@��D%V[=�Jr<���t�f �27-�t J" n���5���	tk�������d��{Y����3&������?�3kr�zv @���7[�F�"@�@+��LSb����D��X-Qgk*-p��F!@�D�f�:[S	h�@���?�ii��5�����4m��^9=������S�����+��qsu���h�����J��zd��x�%�h�$@�en<ZF�@�D@�,IGk&-���9�������o�����4~���Lo��/��|z�����7k��6&R@���%V'r���%V{��\:"��cB����7{��\:"�kqs��p�����7�g6~���NI�{��oB\����
�Z�,nOh�" nf=%��+#���Sb��:�� ��n<���\ ]& nvY���^�������������sX��19���a��������^X]�^����v�'@��x��LMbu<��w���A@��|n<�y�M�q� @�@>�"����[�,<n���sXgL���nF8(y��kN���6j�7k�c�m73b����b�@b����U�O��G�l��b
����W�"@�}E���ei��5���7�i�i���g�-6������'P��Y�}� �jq3�Xm��*��$VK���I�@��x����(���Y���LZ&P���t�����
�_�n($�dm��r�)��]g�]�����r�(b��Hh����aJ��pP��P�e�mm%@�n<Z���I@�,Sok+�(r�\2~y�`�d�`����r����p�.��M��fL���Pv �
9n�b�C@��T%V�1�JpL���|@IDATt�& �R7-�t0J  n���5���
�%n����pA�L��/k�7�Rx��f��3b�Ia��Ia�Y��������S�����(K�,w/k=�73M��V��Kb�D����D��GK��	��%�lM%@�%e��w<�$\x�@���%���I�5����{�}�d;M���X�$c�N�y P<������� �iq3�X���+��$V���A�@��xt���(���Y���:&P����S��E����2�6�����g��lL�����~�I�����`ggI�X��I���v(k���� P@q3�T���N4Ib���A�@��x�7���N���Pv�$P���pp8�t�@�����`Q���v���g�$l�L�$�ZI��KW��C�tKw�O��@=����z&� �L@��t$V���
H�6���u�x�eQH����fC; PW@�|�����,�,��'����������%�'6�����0mjHf�N/�=)y�k��M����/<vJ:C�sak�lX}qs�
��r	��YK��k�����-�t J"���$���L@�l� Pq3_G/N��1��,<��p�I���{R�l��l���H2v��|�ng��t�������b�g��e����v�������  n����N
�����j'G]��%�Z���:"���#�NB�@���u�� �q�}�����i"6I�f	��xM��$`c"v`h�}�����%���������dlL�&�1�=6'���7��B�@���Zb�C�h��X-Z�j�p��na�'@�h�f�zT{h����n�U?����K/O'K���3�=Y�8�
;26&a'�Y��-Z���k�1%I�f�������%�����[+g����^�=�N��D������D���Sb���	tT��GG�������DM @���fG�[v�ll�q�~�2#6���I�>�<'�[^��sa������saGf�����]+Y�8M�&e��&u�e�c��1$
 �T@��x$V�;	H�6�QN���n<��(%@�@#q���r�7���t�����dl�\���q9�����8;6yO�CK�gI�l�����e��Jf�������$	�y�����Im�"@��f���E����	@wJzZ��GOw��'@`��	@wJzZ@����k��������$3^c26�����}��e�����m��*3a��Y26�
�$ac�5&b�g�&�X/�+ n���� P6q3�q������Wb�E�C�@i�x���5��	��-�tJ# n������'�,��Y�#�`����3acrv8}V�s�sb�M�t�+.;��&ZG���q;���Y�sfZ��[����C���q=t�������j���.�>��.��E�@�
�����qat��������Zq�k��p�&X-K�O�,C�l�L�,�%a+��]��;�_Y���>���ZI6�����f�K�vG�u�*���8;�7���X-���hK$V;��d@��G:Q�����Qn'#@��f:��MX4T3�5�����M� ���$�$���3e����\�j��fFl�+	[�*n�O����
�����j{�Ya�.�Z���0�$���M�K�@a���v�� �&q�M��Q��\��h��_c�5M�������}.Y�xpqw<v��#����M�	�v�qL�����>3a;:�V�d��*B�F��q3��X����$V���K�X��G�;_�	���9.6_"@���f�;��M��eI�5��,G����$d�Dl|l|6lL�v�L��K���k�o���{L��!	��-nv���(����u��jAt��!��iq�#@���x�z�~:- nvZ���uq��{���S����	�Le9�$�Z;�[�����	�$Z�Lf�fK�$_c"6]�xr�9�L��7�����.e7�^�X-��oA�%V[���J��G��[c	h����D� @�T�f��[c�$0�,1�����O��k2���$	�-O\�g�.����"rv������5��k�p��1��f:vJ��BRVv,��9�D	�	�����j�Qb_C���4v @�����,
	 �P@�lHc�
��uYh�@L�V��&a�e����_�	�K� 	;mjMv�L��$lL�&����c&�����<���
��Y�J�t���Y��v|�&���h=�=�[@�l��� P4q�h=�=EX4�%Z���a��_�L����q&���sb�H��'�[������r�i�%kO�^��I�B���_��0������f�;m @`����Ibu���J+
H��(�3���h�c/V7W������>����I�$!��1	[y&l�$ak]gL��>�uf_�����I�5+{�=�e�f%	��Dqe__��N���Nj;E7�^�X-�h��6H�N�S ��n<z��\<  nN�S ���fOw��'0.���G�I�5��]�<,Hf�>��?�,O�l�����^y�Jf��3a��l�	�?#&a'����$`���yzk�'�#�fg%���7�h�K����lH���a\��b�%J,��������K@��/ Pbq�����VA���M�"I�����3a{4	[��}��ac"6����Mg�������$���C}����W��Zw��|��z���Ep�����jQGx��%��f`�'@�pn<
��D�@���6;<�7��D`��%������3a�I���ppyX8������3c%���B��l'�O������g�%����Ir�����f����1ig��Lg�fI���qZ���"@�@Q�of=+�Z���vI����	(����u� �fq���O�@����u��9�8+6&]��kL�&���v�/M�&���=&ecr6K�.XT��l\�x�f�f	��g���$u� ���7���X�����%������:7]�%.��.7���\]' nv]�� r
-���,��%ic6�����L�,y�q���/&g��
-)Frv��d��d6l�5�%h+��Y�8����'��9��3fGf�&���r�^h����LUb�����X-A'k"-p��RN#@��f	:Y	h����RN#@�G�2����e�c�6&e�$e����m\�8&b����0�tR��������Ey�Y��y���C��q��\����;��<�u����=���|?&o� Pp��IH�VF��\���T&@�@p�a @ �����Km����	�������,�-Y�.m<�=O6�=���M��������I�����K�]C/��3h��f�b�6M�&��$�}���,Q���M������mR'�K������������@#�zq�Q�"�K��w��6��6�:4�p�Q�n�(�( n���	(���Y�n�(�(����\���8k6&e���I6[�8�<�|�����d_R7���,i��&w��g&�`c�5�Q�$fW�M�@�f�fK�����f������!{ �Y�v����b��&�����<��j)�]�	X
7�����R@�,e�k4�! n��� PJ�n���cv$9;�p�,_�={����|�8�6�5;�$i�p�l�:cZ6{6[�8&]k�<N�iR6K��&tkg�����~I�F��	�
tk����NlK�vB����X-`�jmp��V^'@���f;U�h����V^'@��E���Y�1Ag�����@����8;6I�������/��>��}�HYRwd_��a�f%	�l&m|�,s�qI�$i[��q\9�E;-y��	�������^�(P�����$V�h�[�X�R� @��*	��X%&� P7�6 �J��*1�D�����Y�h��&bG��i26M�fI�������qY�E���l����������n\��L������<�vdI�����R����#I���3mG�%�r�H�O�"�
�f���0{�$V{��\2*��cB����7{��\2* nN(�� �����tZ|�@�t�$e+3g��k����,���Mg���$A[��J��dn�^S�d���$lg$3e��i���I6�<cd)��i�<)K�W�l'��2��Y�}q	�dF����eC�h���)J��b4���%�tM&@`��x��/ PBq����������Z|�L�@	�������M�9I��3f�Y�Y�vpd�l%1�%m���q6m�Lr���+�+�A�$Zg$��J�6}I�V�Y26Y�8�q�Y�vdVmL���-�\�q$nf=,�Z�����I��	�a	(����v�� �&q�M�K�@a���v�� �&q�M�=z���Y�5M��������q\�8Y�8�Y����t���^L������@^��GZt�3�Dm��Mg�f�c���#��$k�����[��������j�ZQ/�Z���.�%���]��K�@Q�����v �.q�]��K�@Q����lw�ka����;���Y��f6mL��%�����<�l;}6��l6m�W�e��`|�l6�6Y�8�!�-og���1a;3Y�8.q�e��;�6�n6������73����C�J$VWd7Vp����X���� �	 �������X���� ��J`0�=�%_���i6�Q�-i�G���������4Y�B�6K�V���Ny�?�������.e��R����qi��a���M��1Q�F��oF��M�3�{���K��:E��YK�}���}�m�uX
+����]�a�I@�l�� PXq��]�a�I@�l�������$��&m����e���C����M��I�t�mL������$��]�<,.�2�3�Y��1!�$\��,�$�Z�������N�Hrv�~��g�wo�V�����X��0�=+��=}�J�
7��O����7��/\	�! n�F?�J�G@����p%������JR�2�����a��R����J�6�_�q[�����fI��tflL��mL�fI�8C�v;M�&�+������&�Z�73M��V��Kb�D����D��GK��	��%�lM%@�%�fK��	��%�lM�y���+.�\��q\
9K��Y�q��R�q���/�/Lf������r��r��,�t6m\�����f��K�e�1)�>�I�93������������vJ����(����w� �bq���G�@����w� �bq���G��0�6]9.�\������,�d_|~��8#7yFmV�m�%Q�7mY�6eyXkN�������3�Y��,�tI�����M�g���������m{�%���=8A�/�:A�NK�@�
���g��� 0A���;-=+ n�l��p&H@�� x�%P`����EIvQ�x�$`%�h�skcY%9�c�8�6+�M��(m��iI6���.o����E�-g�1	����3k��%��d6m�2�3�NL�Vb��#�M��Xm�� PX?��k5��6	��m�uX
+ n�k5��6	��m�uXV[ ���$fc�5&_���e+I��,&fGf��$��sk����]�.[�K����cG�=���3����o�5K�����'�X-f�j��[�l��b
����W�"@�}�f�l��b
����W�"@`�@\�8�A�.e<�������I���M��qm6sv�,�EI�^x�c��p�k��R%V�N\�H��_����	���}��L�@1��b��V �>q�}��L�@1��b��V �������n	CK'����&,L����h�Y��Y�ir6����f�!.�f���h�����P���v���G���g�����J�V)l��X���.B��Q@��|�f>/�	  n�' n��R����1��|L��Y�I�5M�V��1Ig�&�+���~N��F�����:��3��v���.>w���j�t�� @�gZu��3
v�XMqs5}���	����r
&@`5����uJ'�mqsq2�6�
���5krX'������.��%V���E�@�����m
u`�H@�l�� Pq�4]���H@�l�� Pq3�j�����6Tb����F�@��x������
����t4�/ n������
����t4�/ nf},�Z����J����A	(���w�� �q�-�J�@���w�� �q�-�J�@����s%V<���4��v�:6Ep�Q�^�&�) n�S��	(���Y�^�&�) n�S��	(�������jGw�$��d� @�Pn<
��C�@�� ;�7��C�@�� ;�7���X-���\c$V;g�LC��G1�Q+�����9kg"@��f1�Q+�����9kg"@��f�����o��j�����p�����	�����qr'$@�����@�O�@�����;!=. nf(���y�._bu�����^p���=��	�(qs�����^7{��\7% nN��� ���f�s��:�'��%V'�����p��s]��	�`qs�;��	�9q���� 0���w�� �s�f�e�=7t���%V��\�#���w��� ��fw��� @�w����+WJ�@w��������7���X��1�UW*��U��b�7=�I.���7��;\=  n�@'�D�J@����p1�����u��j�n�D��n��D�@7�����qmt���������fq��{�� ���f7��k"@�����w$V�y�v��I�vq��4�R��GWv��"@����.��F�@W
��]�-.��.7��s\]) nf�"������/Jb���� �]n<��?\
�/ nv�B�K@����p5t�����}�
	�.q3�����=s5�=�U.��.p��%�2�q�g��� �%�f�t�� @�g����*J�@���YGH�v������X��s�L������'@����^�1�K��D����O�@�	����c����7��X�������X���s�L���	�wbzT@����s�L���9a�NL�@�
��=�q.��	73z��	��}b����?WO�@��xt��	�mq����� �yq����H�@o�������������j��^!�(�Z�n�:(�����NE�@!��Bt�F �Aq���NE�@!��Bt�F �Aq3��X���+��$V����B�@'�xtB�9(���Y���:! nvB�9(���Y���:! nf���m<��j;U�h�����:87���D�@[����:87���D�@[���Wb������X-n�j�p��WG%@���fq�V�h����WG%@���fq�V�h�����J��g|�����b
$@��n<Z�p^@�,|k -7[�p^@�,|k -73P����Nb�,=���J��G�$�����e�i�$@�U�f�$�����e�i�$@�U�f&)���U��H����5���p����@�@����u�� ����j:%7K���K��j�����j�r@b������_�����|��r
����w�&@`�����|��r
����w�&@`��ff'�:�1T�oJ����5��q���� Pjq������C@��� Pjq������C@���$V�1x|%�U����x��R���1@��|�f>/�	  n�' nf^�����#���	�����6�Mc����|^j @@�4 �O@���$V���G$V
�p���Km����	�����&@���i @ ����yI��7j�H�
�'��#���7��7�y�M�q� @�@>q3��X�7n��X5 �O��G>/�	  n�' n��R���1@��|�f�%��o��=" �j( @ ���|^j @@�4 �O@����6�Mc�����Kb5��Q{D@b�P @�@>7���&@���i @ �����Km����	�����j�q�������@��|n<�y�M�q� @�@>q3���7��73/��|�F��UC���x��R���1@��|�f>/�	  n�' nf^�����#���	�����6�Mc����|^j @@�4 �O@���$V���G$V
�p���Km����	�����&@���i @ ����yI��7j�H�
�'��#���7��7�y�M�q� @�@>q3��X�7n��X5 �O��G>/�	  n�' n��R���1@��|�f�%��o��=" �j( @ ���|^j @@�4 �O@����6�Mc�����Kb5��Q{D@b�P @�@>7���&@���i @ �����Km����	�����j�q�������@��|n<�y�M�q� @�@>q3���7��73/��|�F��UC���x��R���1@��|�f>/�	  n�' nf^�����#���	�����6�Mc����|^j @@�4 �O@���$V���G$V
�p���Km����	�����&@���i @ ����yI��7j�H�
�'��#���7��7�y�M�q� @�@>q3��X�7n��X5 �O��G>/�	  n�' n��R���1@��|�f�%��o��=" �j( @ ���|^j @@�4 �O@����6�Mc�����Kb5��Q{D@b�P @�@>7���&@���i @ �����Km����	�����j�q�������@��|n<�y�M�q� @�@>q3���7��73/��|�F��UC���x��R���1@��|�f>/�	  n�' nf^�����#���	�����6�Mc����|^j @@�4 �O@���$V���G$V
�p���Km����	�����&@���i @ ����yI��7j�H�
�'��#���7��7�y�M�q� @�@>q3��X�7n��X5 �O��G>/�	  n�' n��R���1@��|�f�%��o��=" �j( @ ���|^j @@�4 �O@����6�Mc�����Kb5��Q{D@b�P @�@>7���&@���i @ �����Km����	�����j�q�������@��|n<�y�M�q� @�@>q3���7��73/��|�F��UC���x��R���1@��|�f>/�	  n�' nf^�����#���	�����6�Mc����|^j @@�4 �O@���$V���G$V
�p���Km����	�����&@���i @ ����yI��7j�H�
�'��#���7��7�y�M�q� @�@>q3��X�7n��X5 �O��G>/�	  n�' n��R���1@��|�f�%��o��l����?\s�5���[m�U�e�]��n8��H����	(����v�f 0nqs�t�H�@I���v�f 0nqs�t�H�@I����%V����p��g>N;��1-}������o��S��������	�O���n<F{�D���	��+������> @`e�����'@��hq3��X=.
����O�����v������o|c����UW]������?���r�[b57�/ Pr7%�O�@nq37�/ Prq��@�	�- n�&�J. nf@b���!�e7�x���GuT����]����/|!�p�	��k��6�����$$Vsq�L�����  @�@>q3���7��7�y�M�q3��o!�T�3V���G
/}�K���?q��-��"�w�}��#�g�}vu��lH����:xA���� �*���(�C����,l @`U��UQR�/������c�p[{��W��������~����i�)��N:���|��%���c*�)�X����M�x4���u��:(� �D@�l�c���uP @������H�6$��k��Ii����~��c�s�%��8 -���{��[n9�N���F2�	 P_��G}�h$ n6�QN����f}�h$ n6�QN����f�"�Z|�|��E��k�����3��s��6]s�5a��wO���������nL�F��d� @�����.J	 �H@�l$������.J	 �H@�l$������Eb�������������i;~���w��]c�t��w�m��&-�����>��3�N���F2�	 P_��G}�h$ n6�QN����f}�h$ n6�QN����f�"�Z|�|���������4m�y�����w�i��>6�d�����/�.<�b���:(� �D��G� PG@�����M��&8v @����YE�����j�A���j�>��s���>�9��v[�n�����/�<����c�4*�$V�WN� @� @� @�S7�xc�O%��v��;��9s�������=��1����7�!-��m���c�4+�\m�c @� @� @�@�$V;%]��l�����;�'�|r8�������.o�����~8l��Fc�( @� @� @� @ 3V<
>��p����v�)��7oLK?����3�8#������'��_ @� @� @����j�G�O~��p�!��-���{��[nYm���PXo������:�����~��� @� @� @��$VG{����K���ny����6��_��Wa�
6�-
�vX:�56��[n	�m�]���1 @� @� @�Z) ��J�.<����=���������Z�|��'�SN9��� @� @� @�c$V�����+��}�{�}��Wm���������;��0i��j�
 @� @� @��
H��5)l������w��]w�t�������U� @� @� @��R@b����E� @� @� @�@!$V��E� @� @� @�@+$V[��X @� @� @�R@b����Q @� @� @��R@b����E� @� @� @�@!$V���m��7�n�����SO�v�!��5�	k��V{O���r�[o�5�y�������N�j���N;�����^�m��/^\w_,�6mZ�n������*�!������������[oL���k��&<���i��e�]��n8��A���=��*5���o��c������^k��v�l���U��=#088�����u�]7����oz����\�ti����������������~�0c�������*�y��g��v�-���onz�~�9�Gbu��OM�~��p�G�K.�dL������{����+ @�@��M�q�.���1M���:��3�>��3j_��,&NW��?�y @�h_��W�?��?4m��������|�Z'���|�3���N��U6�=�7���0u��J�wB ��O������6�(���J����>������u�:��p������&��g�uV�G&qBH��x�)cB���|g���{Fv�������u�d��t��������b|�?���_�{�~�Y�%H��wQ��@L�����7��M�g���O�����.��T����{���>��7}$@�@q-Z��u�w���qr�w�=�X8��s�
�7o���������W�������j#������������iVL��|���s��\��g���7����UW]���_t��G?jzL;	 �ky�q�����������G}t�s�
��z*��E��~�����Dz�q��F����S>���������O�'�L�>=��\�`AZv�u�����zA`��%�o��o�y���^n����{6�����^V*���*N�J�%�U����5|�����_i
?����}6 Pt�/~�������`Ts���p��1v&I�Q�jc�O<1��0��s�=7�;> @�(�l�46�p�	cb_%&KXV��,�Y��Gu�p�C`u��?����k���Zn�Ej'c�L�������QM���?��{��_��~~E�=(��?�iT,�?'���-�=����������~�����Y\�������-�r�f��n�)���\O|O�u/��=����qMx/+H���7�_������V���w�3f�U ��*���?0��:������6Qz�����+&\�C�$ca���������dfA�;���Q�Y�|y�Z���Q�| @�@���Q��1Y=jLSw�i�t�'?��1� @���+�\���������Lf�VcmL���JVa��O�	^q������s�x�j������~����$V��3"000P�.Yk��K�?2�U�G!�7$1���PM�����.��?���k�}�M����+E�	 P
�8����#�<�Jm~����~'��z�d���1kg�����Ex������=��c8����b,��������l @�01�Ub]��J��Qbu<��W^ye��VG����d����j���BUb����?|�WW��^b��=���XMF�Ws��o�9}�@�u����=��s�>��O�����?��,k9f��Q�c����N��2��3'�g��gS������O�m��6��u�s��-#�6 P�o���o��oC2� $K���P�g��E/
�o�}�o���}��&MJ?�g�~������n_r�%��H���a�-�SG�$����?$��I�t��w����������f��,I��n�-�~������_�����{��7�x�w| @�@�	���>a���������*��?�cH�����:�{�d�p�q��4���a��c������6>{�����_�A �^r�u�I���>������;�n�!4z���������X]���?��W�J��������Vd�I��R|-]�4L�2e�*> @�T��V���n��9�e~������2�a��6jjp����0s�����$@�@�	$��g�yf����1yfu�G&���E��k���?��3�1�3���\sMH[��_u�U�������I��4��O|��+_���V���wx���5����?��?�?t�-�M��^�����r��f����S�t�I��SNIY���{���o
�]vYHf��_�����(#@�@W�7W'�Z��{J�v�����8����;����"������ec.�2� ����f��5���E����
����;�H�\;���K/
1�Zy%�YMWx��������7��q�?�������� @��*?��k��Vc<L�T���KWF����{�
[l�E�?~x��_���k�DA����K�8{��E���?��_�5m^%V�����?>�#�Jy������&���!Y�R��!K��Z�`�=$�,�:�{�����_������?���u5���w��Y�!YR3���[I!�P���y��~��tf����%0<|���V��NnD��|�{���I���[G!� ��?����������7F5����f5^~�[��/~7�uU���W���zY >�%>�%����J���G�jN�8������z����e��w�����_�V�\|���b�(�@��x�g�����
�w�a��q1������~T�[n��z����g�����@�G%i�������S{���1��j��,G}t��6����f�Xmty~���H�6!�����/���K��/\����!�q��<s�v�m�F���p2��O=���mO�k0��U��������	���B��@�#����z�{�S����mi��=�9��S�+���zk�;�_~y�:
	 P�dFT5�%��h��g�~���u����V�#n�%RH�@
4K���8�{��~������U4y�;���IV�jX�t�@����{����N�_�������^��W�����w�a�1_���N8���<^c�+ @�@�������r����Y�����������/r�!��?���|EB .Q�7�7i[�YU�s����.�~����d���v�����
oH�o���0w��1u @�1����G�k5e��q5��G�>�gu�Y�ur_"@�@��-O9�{�d����}(��F���k���GZx�����.jS�������{���X��S����/a���K���W�
��a�W�9/�Y��9��w|&@�@Q�OtP�9\p������Q�����*��F�@a~�������/mO%I�������>����I'�4��1����oO�~��4�0������w�^�������W��s���z�����k��~=>��c��x�{���%V�sOy����>8m���@������q?���3�<s�~�V���W��U�����/L^�E����e��%-��3���������8��z�� @���Z��8o���m�����%I����.]Z=��>���u @�~����{��L�F���_�z5V�����JZ�)���<�*�`/U���F5>&D���I�t8>_0���}�ku�%+QU���%��@!�P��R��r�sOy�M7U��e�]6���>�hu�w���1� @��Ve)`�������Z�E�
�w\z�8����}��d���W�.�(���>X�!*&K��V�J��~'�������������W��3zV Yz����N��#>S��������;��������Jq�>88�&j��u�Q���@��"	�?b��.�q��^�X���;/Y�dL��������?�����(����x�)�/_>��6�����d��,1����{o/��fJ,�����{6�N���k�I� l���i��?<$����OO�����L��!�����+?��=������g���K_���J�v�m�0k������&����i��_���'����4�|�������=��w�u�p�5��I�&U��=/Py>`l�9���}e|=��S�����rk������O���Q_�t�MC|&`���M���$�U���<�5���!@�@�6�|����=��#����O���r�)���?�����N;-����O���/���z|�p�	��SOM��z]`eK���2��y��)O�z@���?�n�{����;�>��C����^'t��L`eK��g�!�����>����dy�ji2� �z������Xo}�[��m @����v[�qpU_�����H����N�U�n�b!�-�&
bY|^���^Z���J=��u������MIf��I�n����z�R=��s���Z���}��'�b"��EH�V>L�<9mZ��T������Lf���w��W���Y��}k���<�����?������="���jl�x�)���B�C�d�T"N,�4'��W��e7�x����!@�@<���IDAT�4K����Jz��dV{�8��3���%C+]�">+��s�~[	�#������O%6{���������_d���Z�;��O?�t��wN�����n���)/��������+�KW����K��e�� PT�$Z������V���?����>����*q3>�'�����U:�J�b������Ao��=e��G}�������e����jv:� ���jyi\���>5���s��3V��.��	$#(���!y6`x��^���2eJ���M��9��L�S�]w���[��� @�,q)�?���������Zk��JM�?~����������[���D��2
��/x����c�����GP��B�	 P+0�{��"��w�.\��4��������	 @�F�����X��h� @� @� @��' �ZOE @� @� @�j$Vk0l @� @� @� @����j=e @� @� @���X���I� @� @� @��z��T� @� @� @� @�F@b��& @� @� @��	H��SQF� @� @� @����� @� @� @��' �ZOE @� @� @�j$Vk0l @� @� @� @����j=e @� @� @���X���I� @� @� @��z��T� @� @� @� @�F@b��& @� @� @��	H��SQF� @� @� @����� @� @� @��' �ZOE @� @� @�j$Vk0l @� @� @� @����j=e @� @� @���X���I� @� @� @��z��T� @� @� @� @�F@b��& @� @� @��	H��SQF� @� @� @����� @� @� @��' �ZOE @� @� @�j$Vk0l @� @� @� @����j=e @� @� @���X���I� @� @� @��z��T� @� @� @� @�F@b��& @� @� @��	H��SQF� @� @� @����� @� @� @��' �ZOE @� @� @�j$Vk0l @� @� @� @����j=e @� @� @���X���I� @� @� @��z��T� @� @� @� @�F@b��& @� @� @��	H��SQF� @� @� @����� @� @� @��' �ZOE @��)p��������v�!���n9�����/_&O����� @� �a���; @�S`����w��]���>���/�t#�W���p��w�s�9�����	 @� �*��VI: @��Z�H������
�����!�~����_5� @�����w @� �EJ�y���LU����J� @�@�$V��D� @�! �:��I� @���	H�v��� @� @`5�������Ga���p@��W��������;��cx��N<�����k�:���?�����_���i���g��v�)���Z[����_�������ep�N�:�XW_}u8�����?��O��X�6�����>|�����o��k����7���n���+.�{��g�;����w���+}��/~�8��t��#��|�;����������n��g���;��s���?�_�j������C��+��"���?
�<�H����R�;����Zk����?|��
�_}�?~�N{��G�r�-����������;���^u�U��{�	m�Q�a��>��>����*��N� @��^�X��t� @�(��?��?�I��w�=<���irp���D��~����z����z������6M�X7~�I����7��xE�;&c�1���3�������w5	�t��0e��tW%���,�T�������������g�}6������!�g��7N��D�V[m�g��67�|s�3gN��;��c�����Q�������W��-_�<u�Q����u+��1���1A��+��t�M��oL��+��|����3g��y'@� @�@a$V��B� @���T���~���
|p����;�=��tW�Q��O~2�>��S�I'��n������8��K/
�����}�C��������M�����fL~���<�@��>n�����1AYI^����{����}��7\r�%axx8������<-��������/�8��moK��>��p��������i�3�=�b��8�K_�R��'�b�&����<�=�g�Vl����{��7������������|�3o�L����� l�������
�������o~3=��������J�� @��$ �Z��� @�\�6����'>Qmq\��U�zU:3�MozS������K��%��R�1�X�z����:�����K
�W+��X����s�=�.�g�x�����.��
19|������9��g�{�������&cA�-��qI�I�&�������/z���$sm��,����ei������~w5!g��e��<��tvk���,��%K�������q�����ve_L����Ng���?�Su�
 @�E@b�(=� @�(�@mb������l|i|ke��H�g�yf�g�����e�+K��&(W7����{��������������e��U���q���|q�+>G6�P������/�/y�K�e�k��c�����w^�K�����W�y��~���q�n��iA�?=�P�L��Q�s�=S�z��X��7O��[�3|��k�jDK�W��z'@� @���E�Um"@� @�@A*���\�'�xbL+?����K�n��v��[nI���k�����v�)]B8.������J^�nb5.�{��'��.����p��vLfVf������;]�7���Ol_|N��I���������;��w�qG:���l�]w�5\{��i��p\
8&C~���!��7J�~��_N���r4�I��o�M6��e� @���X-Twj @��-PI��&Nk[|��'�83t��q���?<�eqW|��q��[l��Z��j�{�1��x�p�
7��w�9-�7o^�����;����_�y�{�������qVj|fl\"��D]�N�\�X�$Ikg���NmY�;�KW�����u��a�������f��T�N� @���H��+5� @��ob5�,_�<�����]vY�������
6{����������&V-Z������F|�h�����c���s��|����������E�^���/�[����,��3H+�_����%��������(���-b�Q�H!%E!$���\(L��\r)r+N)�K�{�-�� ����}��}����>�����������~�����)��m�/��1cjO�%K��P5N�;�^���p��LQ����P�.Z�(m��9���'W��u�?
V��>�=^cLG���]E���'�C� @����`�2Si  @�������|�2��{7���K��~���-k���u���9t�4iR�lllL������
7�����������{��~�:���?���w�y����p,���C��U�)[T�Fxy�����M��������j�����j���b?��-[���G�����O]�v��p���`5������~1bD�~��o�N3f�h�'�����m���_�&@� @�@%���F� @� @���C�g����4*;���??m��������3N���;/��5*�w���"��??�Rs���)�h�V��"�l��M�'>>���P}��A����sM��M��<���^����-�	�:uj:p�@�v���\�;v�H�f�������*5��A���+W���g����G�����>�9�&O���"��:���sg�7�����ZmU��}�����k�I[�liZ9���G��� @� ��V��� @��	�l�4&LH�N��J�lm,����x�"-_���b���g�K�.�����z3�
�'N����������7�����������j��}����s���{���t���4l���;�����f���j����g���+��9���"����u�����7o��4�^����3W���o����#G�.��9����k�����Qu!t�N��=Q���o��]�������i��y^b8�����g���� @� @��/" X�E&�k @� @�@JE�{�^�v�o$+W�L����U����0`@���Euf���|o,k[�qO�������Gh���)X������~�zq�.\�6m���>|��8��b	�V�Z�kQ�\�cQ:q��t���|O|D�z���\!�����w���u��^7�X"�S<�����7~�}\c�����������9s��s���oT�-�o�L�R�&@� @�@e���J!@� @�@���s��uu����^�zuZ�v���_�t)����[�n)��y����N?~L+V��c����J�%wk��b�m���������G#���qc�={v�������3�8�8p`���}:4��*���O�7o���K���7De��
R���S�^��3�NQEZ������k���6n���l�~��[��c����-��W��~�{�����E�\\����Gv��!�)� @����`�R�i0 @� �#����\����Ab,������[��r�^�h��G��]�%�c���;��F�5kVw��9�q<z�(W�F�i�~����O�>e�����TdA���oS��������~���?��<y�b)�����5 @�TY@�Z��56 @� @� @�J���� @� @� @��, X��� @� @� @��VKa�	 @� @� @�U�Vyv�� @� @� @��R��0�� @� @� @��*V�<��F� @� @� @�@)��RuB� @� @� @�@��U�]c#@� @� @� @��j)�:!@� @� @� @����*��� @� @� @� P��`�F� @� @� @� Pe�j�g�� @� @� @�(E@�Z
�N @� @� @����`���kl @� @� @��" X-�Q' @� @� @�TY@�Z��56 @� @� @�J���� @� @� @��, X��� @� @� @��VKa�	 @� @� @�U�Vyv�� @� @� @��R��0�� @� @� @��*V�<��F� @� @� @�@)��RuB� @� @� @�@��U�]c#@� @� @� @��j)�:!@� @� @� @����*��� @� @� @� P��`�F� @� @� @� Pe�j�g�� @� @� @�(E@�Z
�N @� @� @����`���kl @� @� @��" X-�Q' @� @� @�TY@�Z��56 @� @� @�J���� @� @� @��, X��� @� @� @�����x9����IEND�B`�
003_only_store_subtrans_when_needed.v13.patchapplication/x-patch; name=003_only_store_subtrans_when_needed.v13.patchDownload
diff --git a/src/backend/access/transam/README b/src/backend/access/transam/README
index 0f61f814c0..4feedf96dd 100644
--- a/src/backend/access/transam/README
+++ b/src/backend/access/transam/README
@@ -377,7 +377,11 @@ transaction.
 
 The "subtransaction parent" (pg_subtrans) mechanism records, for each
 transaction with an XID, the TransactionId of its top-level transaction.  This
-information is stored as soon as the subtransaction is assigned an XID.
+information is stored as soon as the subtransaction is assigned an XID,
+if the owning backend knows that others may need to discover the topxid;
+please see src/backend/access/transam/subtrans.c for gory details. In practice,
+this means that very few parent xids are ever stored in pg_subtrans, an
+optimization which greatly reduces contention for that data structure.
 Top-level transactions do not have a parent, so they leave their pg_subtrans
 entries set to the default value of zero (InvalidTransactionId).
 
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 77d9894dab..91645be641 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -107,7 +107,20 @@ static bool TransactionGroupUpdateXidStatus(TransactionId xid,
 static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
 											   TransactionId *subxids, XidStatus status,
 											   XLogRecPtr lsn, int pageno);
+/*
+ * Run locally by a backend to establish whether or not we will need to
+ * set a status of TRANSACTION_STATUS_SUB_COMMITTED during
+ * TransactionIdSetTreeStatus(), which occurs during final commit.
+ * Knowing this in advance may help optimization of SubTransSetParent().
+ */
+bool
+TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid)
+{
+	int	toppageno = TransactionIdToPage(topxid);
+	int	subpageno = TransactionIdToPage(subxid);
 
+	return (toppageno == subpageno);
+}
 
 /*
  * TransactionIdSetTreeStatus
@@ -133,7 +146,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
  * only once, and the status will be set to committed directly.  Otherwise
  * we must
  *	 1. set sub-committed all subxids that are not on the same page as the
- *		main xid
+ *		main xid (see TransactionIdsAreOnSameXactPage())
  *	 2. atomically set committed the main xid and the subxids on the same page
  *	 3. go over the first bunch again and set them committed
  * Note that as far as concurrent checkers are concerned, main transaction
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index ac92588b40..3a1ca9b80f 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -8,7 +8,36 @@
  * nested transactions implementation.
  *
  * A top-level xact's entry in subtrans is always InvalidTransactionId.
- * A subxact's entry in subtrans always points direct to the topxid.
+ * Other aspects of the contents of SUBTRANS change in PG16:
+ *
+ * 1. If the parent xid is stored, we always point direct to topxid
+ *    and the only call to access this if SubTransGetTopmostTransaction();
+ *    SubTransGetParent() is no longer exported for other modules.
+ * 2. A transaction will store the parent xid only when needed, so in
+ *    many cases the value will remain as InvalidTransactionId.
+ *    This is correct because SubTransGetTopmostTransaction() has a short
+ *    list of potential callers:
+ *
+ * a) When there is no room in the subxid cache, we make calls from
+ *    XidInMVCCSnapshot() only when the xid is not found in snapshot subxip
+ *    which has also been modified in PG16 to allow this to work
+ *    and TransactionIdIsInProgress() when not in recovery and the xid is
+ *    not found in the subxid cache in PGPROC.
+ * b) HeapCheckForSerializableConflictOut() calls if in a serializable xact
+ *    and we are looking for another xact that has caused SIRead locks,
+ *    i.e. another serializable transaction.
+ * c) TransactionIdDidCommit()/TransactionIdDidAbort() called if we see the
+ *    transient state of subcommitted in clog.
+ * d) XactLockTableWait() calls only in Hot Standby mode.
+ *
+ * Since a), b) and c) are known in advance by the originating xact, we can
+ * often avoid the need to call SubTransSetParent() since we know that no
+ * caller needs the data in subtrans to be correct except in the above cases.
+ * If this changes, remember to modify AssignTransactionId().
+ *
+ * The above details allow PG16 to significantly reduce the contention
+ * around subtrans seen when in subtransaction overflow state, especially
+ * with long running transactions.
  *
  * This code is based on xact.c, but the robustness requirements
  * are completely different from pg_xact, because we only need to remember
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index be15ac25f3..e45f151c7f 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -701,12 +701,52 @@ AssignTransactionId(TransactionState s)
 		TransactionId topxid = GetTopTransactionId();
 
 		/*
-		 * Insert entries into subtrans for this xid, noting that the entry
-		 * points directly to the topxid, not the immediate parent. This is
-		 * so it is faster in a long chain of subxids, because the
-		 * algorithm is then O(1), no matter how many subxids are assigned.
+		 * Subtrans entries are only required in specific circumstances:
+		 *
+		 * a) When there's no room in the PG_PROC subxid cache, as mentioned above.
+		 *    i) During XidInMVCCSnapshot() we may need to call
+		 *    GetTopmostTransactionIdFromProcArray() if the snapshot overflowed.
+		 *
+		 *	  ii) When TransactionIdIsInProgress() finds subxid cache overflowed
+		 *	  we may need to call GetTopmostTransactionIdFromProcArray()
+		 *
+		 *    iii) During XactLockTableWait() we sometimes need to know the topxid.
+		 *    If there is room in PG_PROC we can get a subxid's topxid direct
+		 *    from the procarray if the topxid is still running, using
+		 *    GetTopmostTransactionIdFromProcArray(). So we only ever need to
+		 *    call SubTransGetTopmostTransaction() if that xact overflowed;
+		 *    since that is our current transaction, we know whether or not to
+		 *    log the xid for future use.
+		 *
+		 * b) When IsolationIsSerializable() we sometimes need to access topxid
+		 *    during HeapCheckForSerializableConflictOut().
+		 *    This occurs only when SERIALIZABLE is requested by app user.
+		 *
+		 * c) When TransactionIdSetTreeStatus() will use status SUB_COMMITTED,
+		 *    which then requires TransactionIdDidCommit() or TransactionIdDidAbort()
+		 *    to consult subtrans to find parent. In this case we ask Clog/Xact
+		 *    module if TransactionIdsAreOnSameXactPage(). Since we start a new
+		 *    clog page every 32000 xids, this is usually <<1% of subxids,
+		 *    depending upon how far apart the subxacts assign subxids.
 		 */
-		SubTransSetParent(subxid, topxid);
+		if (MyProc->subxidStatus.overflowed ||
+			IsolationIsSerializable() ||
+			!TransactionIdsAreOnSameXactPage(topxid, subxid))
+		{
+			/*
+			 * Insert entries into subtrans for this xid, noting that the entry
+			 * points directly to the topxid, not the immediate parent. This is
+			 * done for two reasons:
+			 * (1) so it is faster in a long chain of subxids, because the
+			 * algorithm is then O(1), no matter how many subxids are assigned.
+			 * (2) so that we don't need to set subxids for unregistered parents.
+			 * Previously when we set the parent to be the immediate parent,
+			 * we then had to set the parent in all cases to maintain the chain
+			 * of values to reach the topxid. If all subxids point to topxid,
+			 * then they are independent of each other and we can skip some.
+			 */
+			SubTransSetParent(subxid, topxid);
+		}
 	}
 
 	/*
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 775471d2a7..f404db552f 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -301,6 +301,9 @@ extern void AssertTransactionIdInAllowableRange(TransactionId xid);
 #define AssertTransactionIdInAllowableRange(xid) ((void)true)
 #endif
 
+/* in transam/clog.c */
+extern bool TransactionIdsAreOnSameXactPage(TransactionId topxid, TransactionId subxid);
+
 /*
  * Some frontend programs include this header.  For compilers that emit static
  * inline functions even when they're unused, that leads to unsatisfied
002_redesign_subtrans_calls_and_xidinmvccsnapshot.v13.patchapplication/x-patch; name=002_redesign_subtrans_calls_and_xidinmvccsnapshot.v13.patchDownload
diff --git a/src/backend/access/transam/README b/src/backend/access/transam/README
index 22c8ae9755..0f61f814c0 100644
--- a/src/backend/access/transam/README
+++ b/src/backend/access/transam/README
@@ -376,7 +376,7 @@ commit state is dependent on the commit status of each and every ancestor
 transaction.
 
 The "subtransaction parent" (pg_subtrans) mechanism records, for each
-transaction with an XID, the TransactionId of its parent transaction.  This
+transaction with an XID, the TransactionId of its top-level transaction.  This
 information is stored as soon as the subtransaction is assigned an XID.
 Top-level transactions do not have a parent, so they leave their pg_subtrans
 entries set to the default value of zero (InvalidTransactionId).
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 66d3548155..ac92588b40 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -5,10 +5,10 @@
  *
  * The pg_subtrans manager is a pg_xact-like manager that stores the parent
  * transaction Id for each transaction.  It is a fundamental part of the
- * nested transactions implementation.  A main transaction has a parent
- * of InvalidTransactionId, and each subtransaction has its immediate parent.
- * The tree can easily be walked from child to parent, but not in the
- * opposite direction.
+ * nested transactions implementation.
+ *
+ * A top-level xact's entry in subtrans is always InvalidTransactionId.
+ * A subxact's entry in subtrans always points direct to the topxid.
  *
  * This code is based on xact.c, but the robustness requirements
  * are completely different from pg_xact, because we only need to remember
@@ -105,7 +105,7 @@ SubTransSetParent(TransactionId xid, TransactionId parent)
 /*
  * Interrogate the parent of a transaction in the subtrans log.
  */
-TransactionId
+static inline TransactionId
 SubTransGetParent(TransactionId xid)
 {
 	int			pageno = TransactionIdToPage(xid);
@@ -137,46 +137,49 @@ SubTransGetParent(TransactionId xid)
 /*
  * SubTransGetTopmostTransaction
  *
- * Returns the topmost transaction of the given transaction id.
+ * Returns the topmost transaction of the given transaction id, if one has
+ * been recorded in pg_subtrans.
  *
- * Because we cannot look back further than TransactionXmin, it is possible
- * that this function will lie and return an intermediate subtransaction ID
+ * Since we cannot look back further than TransactionXmin, it is possible
+ * that this function will lie and return the input xid unchanged
  * instead of the true topmost parent ID.  This is OK, because in practice
  * we only care about detecting whether the topmost parent is still running
  * or is part of a current snapshot's list of still-running transactions.
  * Therefore, any XID before TransactionXmin is as good as any other.
+ *
+ * There is no longer a loop here since all subxids point directly to their
+ * topxids, hence we need only call SubTransGetParent() once.
  */
 TransactionId
 SubTransGetTopmostTransaction(TransactionId xid)
 {
-	TransactionId parentXid = xid,
-				previousXid = xid;
+	TransactionId parentXid;
 
 	/* Can't ask about stuff that might not be around anymore */
 	Assert(TransactionIdFollowsOrEquals(xid, TransactionXmin));
 
-	while (TransactionIdIsValid(parentXid))
-	{
-		previousXid = parentXid;
-		if (TransactionIdPrecedes(parentXid, TransactionXmin))
-			break;
-		parentXid = SubTransGetParent(parentXid);
-
-		/*
-		 * By convention the parent xid gets allocated first, so should always
-		 * precede the child xid. Anything else points to a corrupted data
-		 * structure that could lead to an infinite loop, so exit.
-		 */
-		if (!TransactionIdPrecedes(parentXid, previousXid))
-			elog(ERROR, "pg_subtrans contains invalid entry: xid %u points to parent xid %u",
-				 previousXid, parentXid);
-	}
+	if (!TransactionIdIsValid(xid))
+		return xid;
 
-	Assert(TransactionIdIsValid(previousXid));
+	parentXid = SubTransGetParent(xid);
 
-	return previousXid;
-}
+	if (!TransactionIdIsValid(parentXid))
+		return xid;
 
+	/*
+	 * By convention the parent xid gets allocated first, so should always
+	 * precede the child xid. Anything else points to a corrupted data
+	 * structure that could lead to an infinite loop, so exit.
+	 */
+	if (!TransactionIdPrecedes(parentXid, xid))
+		elog(ERROR, "pg_subtrans contains invalid entry: xid %u points to parent xid %u",
+			 xid, parentXid);
+
+	if (TransactionIdPrecedes(parentXid, TransactionXmin))
+		return xid;
+
+	return parentXid;
+}
 
 /*
  * Initialization of shared memory for SUBTRANS
diff --git a/src/backend/access/transam/transam.c b/src/backend/access/transam/transam.c
index 5865810135..66299454c3 100644
--- a/src/backend/access/transam/transam.c
+++ b/src/backend/access/transam/transam.c
@@ -135,7 +135,12 @@ TransactionIdDidCommit(TransactionId transactionId)
 		return true;
 
 	/*
-	 * If it's marked subcommitted, we have to check the parent recursively.
+	 * If it's marked subcommitted, we know that there is or was a commit in
+	 * progress for the topxid. If we simply wait for the status to change to
+	 * committed we might wait forever, so we have to check the topxid status
+	 * and for similar reasons can't wait there either, even though that would
+	 * be more useful in the common case.
+	 *
 	 * However, if it's older than TransactionXmin, we can't look at
 	 * pg_subtrans; instead assume that the parent crashed without cleaning up
 	 * its children.
@@ -147,6 +152,11 @@ TransactionIdDidCommit(TransactionId transactionId)
 	 * StartupSUBTRANS() has ensured that any missing information will be
 	 * zeroed.  Since this case should not happen under normal conditions, it
 	 * seems reasonable to emit a WARNING for it.
+	 *
+	 * This implementation is new for PG16, since SubTransGetParent() is now
+	 * private, we make one call to SubTransGetTopmostTransaction() rather than
+	 * a recursive call. The design pattern is same for TransactionIdDidCommit()
+	 * and for TransactionIdDidAbort().
 	 */
 	if (xidstatus == TRANSACTION_STATUS_SUB_COMMITTED)
 	{
@@ -154,14 +164,30 @@ TransactionIdDidCommit(TransactionId transactionId)
 
 		if (TransactionIdPrecedes(transactionId, TransactionXmin))
 			return false;
-		parentXid = SubTransGetParent(transactionId);
-		if (!TransactionIdIsValid(parentXid))
+		parentXid = SubTransGetTopmostTransaction(transactionId);
+		if (parentXid == transactionId)
 		{
 			elog(WARNING, "no pg_subtrans entry for subcommitted XID %u",
 				 transactionId);
 			return false;
 		}
-		return TransactionIdDidCommit(parentXid);
+
+		/*
+		 * Get the topxid status without delay, even though in the typical case
+		 * we are racing against the final commit.
+		 */
+		xidstatus = TransactionLogFetch(parentXid);
+
+		/*
+		 * Topxid should never show as subcommitted; see clog.c
+		 */
+		Assert(xidstatus != TRANSACTION_STATUS_SUB_COMMITTED);
+
+		/*
+		 * If it's marked committed, it's committed.
+		 */
+		if (xidstatus == TRANSACTION_STATUS_COMMITTED)
+			return true;
 	}
 
 	/*
@@ -191,7 +217,9 @@ TransactionIdDidAbort(TransactionId transactionId)
 		return true;
 
 	/*
-	 * If it's marked subcommitted, we have to check the parent recursively.
+	 * If it's marked subcommitted, we have to check the topxid, see
+	 * TransactionIdDidCommit().
+	 *
 	 * However, if it's older than TransactionXmin, we can't look at
 	 * pg_subtrans; instead assume that the parent crashed without cleaning up
 	 * its children.
@@ -202,15 +230,31 @@ TransactionIdDidAbort(TransactionId transactionId)
 
 		if (TransactionIdPrecedes(transactionId, TransactionXmin))
 			return true;
-		parentXid = SubTransGetParent(transactionId);
-		if (!TransactionIdIsValid(parentXid))
+		parentXid = SubTransGetTopmostTransaction(transactionId);
+		if (parentXid == transactionId)
 		{
 			/* see notes in TransactionIdDidCommit */
 			elog(WARNING, "no pg_subtrans entry for subcommitted XID %u",
 				 transactionId);
 			return true;
 		}
-		return TransactionIdDidAbort(parentXid);
+
+		/*
+		 * Get the topxid status without delay, even though in the typical case
+		 * we are racing against the final commit.
+		 */
+		xidstatus = TransactionLogFetch(parentXid);
+
+		/*
+		 * Topxid should never show as subcommitted; see clog.c
+		 */
+		Assert(xidstatus != TRANSACTION_STATUS_SUB_COMMITTED);
+
+		/*
+		 * If it's marked aborted, it's aborted.
+		 */
+		if (xidstatus == TRANSACTION_STATUS_ABORTED)
+			return true;
 	}
 
 	/*
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 8086b857b9..be15ac25f3 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -696,8 +696,18 @@ AssignTransactionId(TransactionState s)
 		XactTopFullTransactionId = s->fullTransactionId;
 
 	if (isSubXact)
-		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+	{
+		TransactionId subxid = XidFromFullTransactionId(s->fullTransactionId);
+		TransactionId topxid = GetTopTransactionId();
+
+		/*
+		 * Insert entries into subtrans for this xid, noting that the entry
+		 * points directly to the topxid, not the immediate parent. This is
+		 * so it is faster in a long chain of subxids, because the
+		 * algorithm is then O(1), no matter how many subxids are assigned.
+		 */
+		SubTransSetParent(subxid, topxid);
+	}
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 9e8b6756fe..6cfb1a42c5 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -262,6 +262,14 @@ static ProcArrayStruct *procArray;
 
 static PGPROC *allProcs;
 
+/*
+ * Remember the last call to TransactionIdIsInProgress() so we can avoid calling
+ * SubTransGetTopMostTransaction() when the subxid is present in the procarray,
+ * so preventing data contention from becoming subtrans contention as well.
+ */
+static TransactionId LastCallXidIsInProgressSubXid = InvalidTransactionId;
+static TransactionId LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 /*
  * Cache to reduce overhead of repeated calls to TransactionIdIsInProgress()
  */
@@ -1310,14 +1318,14 @@ ProcArrayApplyXidAssignment(TransactionId topxid,
 
 	/*
 	 * Notice that we update pg_subtrans with the top-level xid, rather than
-	 * the parent xid. This is a difference between normal processing and
-	 * recovery, yet is still correct in all cases. The reason is that
+	 * the parent xid, which is correct in all cases. The reason is that
 	 * subtransaction commit is not marked in clog until commit processing, so
 	 * all aborted subtransactions have already been clearly marked in clog.
 	 * As a result we are able to refer directly to the top-level
 	 * transaction's state rather than skipping through all the intermediate
 	 * states in the subtransaction tree. This should be the first time we
-	 * have attempted to SubTransSetParent().
+	 * have attempted to SubTransSetParent() for this xid in recovery.
+	 * XXX this may be optimized later, but we don't have good test coverage.
 	 */
 	for (i = 0; i < nsubxids; i++)
 		SubTransSetParent(subxids[i], topxid);
@@ -1441,6 +1449,8 @@ TransactionIdIsInProgress(TransactionId xid)
 	other_xids = ProcGlobal->xids;
 	other_subxidstates = ProcGlobal->subxidStates;
 
+	LastCallXidIsInProgressSubXid = LastCallXidIsInProgressParentXid = InvalidTransactionId;
+
 	LWLockAcquire(ProcArrayLock, LW_SHARED);
 
 	/*
@@ -1509,6 +1519,15 @@ TransactionIdIsInProgress(TransactionId xid)
 			{
 				LWLockRelease(ProcArrayLock);
 				xc_by_child_xid_inc();
+
+				/*
+				 * Remember the parent xid, for use during XactLockTableWait().
+				 * We do this because it is cheaper than looking up pg_subtrans,
+				 * and also allows us to reduce calls to subtrans.
+				 */
+				LastCallXidIsInProgressSubXid = xid;
+				LastCallXidIsInProgressParentXid = pxid;
+
 				return true;
 			}
 		}
@@ -1589,12 +1608,38 @@ TransactionIdIsInProgress(TransactionId xid)
 	Assert(TransactionIdIsValid(topxid));
 	if (!TransactionIdEquals(topxid, xid) &&
 		pg_lfind32(topxid, xids, nxids))
+	{
+		LastCallXidIsInProgressSubXid = xid;
+		LastCallXidIsInProgressParentXid = topxid;
 		return true;
+	}
 
 	cachedXidIsNotInProgress = xid;
 	return false;
 }
 
+/*
+ * Allow the topmost xid to be accessed from the last call to
+ * TransactionIdIsInProgress(). Specifically designed for use in
+ * XactLockTableWait().
+ */
+bool
+GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid)
+{
+	bool found = false;
+
+	Assert(TransactionIdIsNormal(xid));
+
+	if (LastCallXidIsInProgressSubXid == xid)
+	{
+		Assert(TransactionIdIsNormal(LastCallXidIsInProgressParentXid));
+		*pxid = LastCallXidIsInProgressParentXid;
+		found = true;
+	}
+
+	return found;
+}
+
 /*
  * TransactionIdIsActive -- is xid the top-level XID of an active backend?
  *
@@ -2352,9 +2397,8 @@ GetSnapshotData(Snapshot snapshot)
 			xip[count++] = xid;
 
 			/*
-			 * Save subtransaction XIDs if possible (if we've already
-			 * overflowed, there's no point).  Note that the subxact XIDs must
-			 * be later than their parent, so no need to check them against
+			 * Save subxid cache into snapshot. Note that the subxact XIDs
+			 * must be later than their parent, so no need to check them against
 			 * xmin.  We could filter against xmax, but it seems better not to
 			 * do that much work while holding the ProcArrayLock.
 			 *
@@ -2366,27 +2410,34 @@ GetSnapshotData(Snapshot snapshot)
 			 *
 			 * Again, our own XIDs are not included in the snapshot.
 			 */
-			if (!suboverflowed)
+			if (subxidStates[pgxactoff].overflowed)
+				suboverflowed = true;
+
+			/*
+			 * Include all subxids, whether or not we overflowed. This is
+			 * important because it can reduce the number of accesses to SUBTRANS
+			 * when we search snapshots, which is important for scalability,
+			 * especially in the presence of both overflowed and long running xacts.
+			 * This is true when fraction of subxids held in subxip is a large
+			 * fraction of the total subxids in use. In the case where one or more
+			 * transactions had more subxids in progress than the total size of
+			 * the cache this might not be true, but we consider that case to be
+			 * unlikely, even if it is possible.
+			 */
 			{
+				int			nsubxids = subxidStates[pgxactoff].count;
 
-				if (subxidStates[pgxactoff].overflowed)
-					suboverflowed = true;
-				else
+				if (nsubxids > 0)
 				{
-					int			nsubxids = subxidStates[pgxactoff].count;
-
-					if (nsubxids > 0)
-					{
-						int			pgprocno = pgprocnos[pgxactoff];
-						PGPROC	   *proc = &allProcs[pgprocno];
+					int			pgprocno = pgprocnos[pgxactoff];
+					PGPROC	   *proc = &allProcs[pgprocno];
 
-						pg_read_barrier();	/* pairs with GetNewTransactionId */
+					pg_read_barrier();	/* pairs with GetNewTransactionId */
 
-						memcpy(snapshot->subxip + subcount,
-							   (void *) proc->subxids.xids,
-							   nsubxids * sizeof(TransactionId));
-						subcount += nsubxids;
-					}
+					memcpy(snapshot->subxip + subcount,
+						   (void *) proc->subxids.xids,
+						   nsubxids * sizeof(TransactionId));
+					subcount += nsubxids;
 				}
 			}
 		}
@@ -2712,7 +2763,8 @@ ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc)
  * that bookkeeping.
  *
  * Note that if any transaction has overflowed its cached subtransactions
- * then there is no real need include any subtransactions.
+ * then there is no real need include any subtransactions, which is
+ * different from GetSnapshotData which always stored all available subxids.
  */
 RunningTransactions
 GetRunningTransactionData(void)
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 1043068bac..37b098d186 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -694,6 +694,8 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -724,7 +726,27 @@ XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid,
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * In most cases, we can get the parent xid from our prior call to
+		 * TransactionIdIsInProgress(), except in hot standby. If not, we have
+		 * to ask subtrans for the parent.
+		 */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test3 */
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+		{
+			/*
+			 * We can get here if RecoveryInProgress() during the last call to
+			 * TransactionIdIsInProgress(), but we don't Assert that here since
+			 * recovery might end before we check.
+			 */
+			xid = SubTransGetTopmostTransaction(xid);
+		}
 	}
 
 	if (oper != XLTW_None)
@@ -745,6 +767,8 @@ ConditionalXactLockTableWait(TransactionId xid)
 
 	for (;;)
 	{
+		TransactionId pxid = InvalidTransactionId;
+
 		Assert(TransactionIdIsValid(xid));
 		Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny()));
 
@@ -762,7 +786,15 @@ ConditionalXactLockTableWait(TransactionId xid)
 		if (!first)
 			pg_usleep(1000L);
 		first = false;
-		xid = SubTransGetTopmostTransaction(xid);
+
+		/* See XactLockTableWait about this case */
+		if (GetTopmostTransactionIdFromProcArray(xid, &pxid))
+		{
+			Assert(TransactionIdIsValid(pxid));
+			xid = pxid;
+		}
+		else
+			xid = SubTransGetTopmostTransaction(xid);
 	}
 
 	return true;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 2524b1c585..9cd5065085 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -639,13 +639,9 @@ CopySnapshot(Snapshot snapshot)
 		newsnap->xip = NULL;
 
 	/*
-	 * Setup subXID array. Don't bother to copy it if it had overflowed,
-	 * though, because it's not used anywhere in that case. Except if it's a
-	 * snapshot taken during recovery; all the top-level XIDs are in subxip as
-	 * well in that case, so we mustn't lose them.
+	 * Setup subXID array, copying all subxids, even if one has overflowed.
 	 */
-	if (snapshot->subxcnt > 0 &&
-		(!snapshot->suboverflowed || snapshot->takenDuringRecovery))
+	if (snapshot->subxcnt > 0)
 	{
 		newsnap->subxip = (TransactionId *) ((char *) newsnap + subxipoff);
 		memcpy(newsnap->subxip, snapshot->subxip,
@@ -1240,8 +1236,10 @@ ExportSnapshot(Snapshot snapshot)
 		snapshot->subxcnt + nchildren > GetMaxSnapshotSubxidCount())
 		appendStringInfoString(&buf, "sof:1\n");
 	else
-	{
 		appendStringInfoString(&buf, "sof:0\n");
+
+	/* then unconditionally, since we always include all subxids */
+	{
 		appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
 		for (i = 0; i < snapshot->subxcnt; i++)
 			appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
@@ -1492,7 +1490,7 @@ ImportSnapshot(const char *idstr)
 
 	snapshot.suboverflowed = parseIntFromText("sof:", &filebuf, path);
 
-	if (!snapshot.suboverflowed)
+	/* then unconditionally, since we always include all subxids */
 	{
 		snapshot.subxcnt = xcnt = parseIntFromText("sxcnt:", &filebuf, path);
 
@@ -1506,11 +1504,6 @@ ImportSnapshot(const char *idstr)
 		for (i = 0; i < xcnt; i++)
 			snapshot.subxip[i] = parseXidFromText("sxp:", &filebuf, path);
 	}
-	else
-	{
-		snapshot.subxcnt = 0;
-		snapshot.subxip = NULL;
-	}
 
 	snapshot.takenDuringRecovery = parseIntFromText("rec:", &filebuf, path);
 
@@ -2286,6 +2279,8 @@ RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
 bool
 XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 {
+	bool		have_parent = false;
+
 	/*
 	 * Make a quick range check to eliminate most XIDs without looking at the
 	 * xip arrays.  Note that this is OK even if we convert a subxact XID to
@@ -2301,80 +2296,90 @@ XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
 	if (TransactionIdFollowsOrEquals(xid, snapshot->xmax))
 		return true;
 
+	/*
+	 * Previously, if the snapshot overflowed we would check for missing
+	 * subxids by calling subtrans in all cases. This caused a sudden massive
+	 * performance hit following overflow of even a single backend.
+	 *
+	 * This new version reorders the operations in XidMVCCSnapshot, reducing
+	 * calls to SubTransGetTopmostTransaction to the absolute minimum needed
+	 * and smoothing out the performance drop following overflow.
+	 * The previous code was neat, but not efficient for the overflow case.
+	 *
+	 * First, we check whether the xid is in the snapshot cache. If not present
+	 * and the snapshot is not complete because we overflowed we then check
+	 * SubTransGetTopmostTransaction(). In the presence of just a few
+	 * overflowed xids this gives us a high probability of a cache hit,
+	 * which maintains the performance. If the number of overflowed xids
+	 * becomes very high then the cache is less useful and performance will
+	 * continue to drop as it did before, so the difference between the two
+	 * techniques is what occurs with smaller numbers of overflowed xids
+	 * where num of xids not in cache < num xids in cache, which is good
+	 * because that is by far the most common case.
+	 */
+retry_search:
+
 	/*
 	 * Snapshot information is stored slightly differently in snapshots taken
-	 * during recovery.
+	 * during recovery. xip is empty on standbys and all xids are in subxip.
 	 */
 	if (!snapshot->takenDuringRecovery)
 	{
+		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
+			return true;
+
 		/*
-		 * If the snapshot contains full subxact data, the fastest way to
-		 * check things is just to compare the given XID against both subxact
-		 * XIDs and top-level XIDs.  If the snapshot overflowed, we have to
-		 * use pg_subtrans to convert a subxact XID to its parent XID, but
-		 * then we need only look at top-level XIDs not subxacts.
+		 * If we have the parent xid, then the xid is not in snapshot
 		 */
-		if (!snapshot->suboverflowed)
-		{
-			/* we have full data, so search subxip */
-			if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-				return true;
-
-			/* not there, fall through to search xip[] */
-		}
-		else
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
+		if (have_parent)
+			return false;
+	}
 
-			/*
-			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
-			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
-				return false;
-		}
+	/*
+	 * Now search subxip, which contains first 64 subxids of each topxid.
+	 */
+	if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
+		return true;
 
-		if (pg_lfind32(xid, snapshot->xip, snapshot->xcnt))
-			return true;
-	}
-	else
+	if (!have_parent && snapshot->suboverflowed)
 	{
+		TransactionId pxid;
+
+		/* TESTED-BY src/test/isolation/specs/subx-overflow.spec test1 and test2 */
+
 		/*
-		 * In recovery we store all xids in the subxip array because it is by
-		 * far the bigger array, and we mostly don't know which xids are
-		 * top-level and which are subxacts. The xip array is empty.
+		 * If we haven't found xid yet, it might be because it is a subxid
+		 * that is not present because we overflowed, but it might also be
+		 * because the xid is not in the snapshot.
 		 *
-		 * We start by searching subtrans, if we overflowed.
+		 * It is important we do this step last because it is expensive,
+		 * and if everybody does this then SubTransSLRU is heavily contended.
 		 */
-		if (snapshot->suboverflowed)
-		{
-			/*
-			 * Snapshot overflowed, so convert xid to top-level.  This is safe
-			 * because we eliminated too-old XIDs above.
-			 */
-			xid = SubTransGetTopmostTransaction(xid);
 
+		/*
+		 * Snapshot overflowed, so convert xid to top-level.  This is safe
+		 * because we eliminated too-old XIDs above. Every overflowed subxid
+		 * will always have a parent recorded during AssignTransactionId()
+		 * so this should always return a valid TransactionId, if a subxact.
+		 */
+		pxid = SubTransGetTopmostTransaction(xid);
+
+		/*
+		 * Check whether xid was a subxact. If we now have a parent xid, loop.
+		 */
+		if (TransactionIdPrecedes(pxid, xid))
+		{
 			/*
 			 * If xid was indeed a subxact, we might now have an xid < xmin,
-			 * so recheck to avoid an array scan.  No point in rechecking
-			 * xmax.
+			 * so recheck to avoid an array scan. No point in rechecking xmax.
 			 */
-			if (TransactionIdPrecedes(xid, snapshot->xmin))
+			if (TransactionIdPrecedes(pxid, snapshot->xmin))
 				return false;
-		}
 
-		/*
-		 * We now have either a top-level xid higher than xmin or an
-		 * indeterminate xid. We don't know whether it's top level or subxact
-		 * but it doesn't matter. If it's present, the xid is visible.
-		 */
-		if (pg_lfind32(xid, snapshot->subxip, snapshot->subxcnt))
-			return true;
+			xid = pxid;
+			have_parent = true;
+			goto retry_search; /* search arrays again, now we have parent */
+		}
 	}
 
 	return false;
diff --git a/src/include/access/subtrans.h b/src/include/access/subtrans.h
index f94e116640..50f1b06197 100644
--- a/src/include/access/subtrans.h
+++ b/src/include/access/subtrans.h
@@ -15,7 +15,6 @@
 #define NUM_SUBTRANS_BUFFERS	32
 
 extern void SubTransSetParent(TransactionId xid, TransactionId parent);
-extern TransactionId SubTransGetParent(TransactionId xid);
 extern TransactionId SubTransGetTopmostTransaction(TransactionId xid);
 
 extern Size SUBTRANSShmemSize(void);
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index 9761f5374c..8f344dab6f 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -52,6 +52,8 @@ extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
 extern RunningTransactions GetRunningTransactionData(void);
 
 extern bool TransactionIdIsInProgress(TransactionId xid);
+extern bool GetTopmostTransactionIdFromProcArray(TransactionId xid, TransactionId *pxid);
+
 extern bool TransactionIdIsActive(TransactionId xid);
 extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
 extern TransactionId GetOldestTransactionIdConsideredRunning(void);
#31Tomas Vondra
tomas.vondra@enterprisedb.com
In reply to: Simon Riggs (#30)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On 11/17/22 18:29, Simon Riggs wrote:

On Thu, 17 Nov 2022 at 17:04, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

New version with greatly improved comments coming very soon.

Perhaps it would be a good idea to split up the patch. The business
about making pg_subtrans flat rather than a tree seems like a good
idea in any event, although as I said it doesn't seem like we've got
a fleshed-out version of that here. We could push forward on getting
that done and then separately consider the rest of it.

Yes, I thought you might ask that so, after some thought, have found a
clean way to do that and have split this into two parts.

Attached.

002 includes many comment revisions, as well as flattening the loops
in SubTransGetTopmostTransaction and TransactionIdDidCommit/Abort
003 includes the idea to not-always do SubTransSetParent()

I'm a bit confused by the TransactionIdsAreOnSameXactPage naming. Isn't
this really checking clog pages?

regards

--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#32Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Tomas Vondra (#31)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Thu, 17 Nov 2022 at 20:29, Tomas Vondra
<tomas.vondra@enterprisedb.com> wrote:

On 11/17/22 18:29, Simon Riggs wrote:

On Thu, 17 Nov 2022 at 17:04, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

003 includes the idea to not-always do SubTransSetParent()

I'm a bit confused by the TransactionIdsAreOnSameXactPage naming. Isn't
this really checking clog pages?

Yes, clog page. I named it to match the new name of pg_xact

--
Simon Riggs http://www.EnterpriseDB.com/

#33Simon Riggs
simon.riggs@enterprisedb.com
In reply to: Simon Riggs (#30)
2 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Thu, 17 Nov 2022 at 17:29, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

(yes, the last line shows x10 performance patched, that is not a typo)

New version of patch, now just a one-line patch!

Results show it's still a good win for XidInMVCCSnapshot().

--
Simon Riggs http://www.EnterpriseDB.com/

Attachments:

subtrans_points_to_topxid.v13.patchapplication/octet-stream; name=subtrans_points_to_topxid.v13.patchDownload
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 8086b857b9..8e603c7d6a 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -697,7 +697,7 @@ AssignTransactionId(TransactionState s)
 
 	if (isSubXact)
 		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+						  XidFromFullTransactionId(XactTopFullTransactionId));
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
pg15-subtrans-minimal-patch.pngimage/png; name=pg15-subtrans-minimal-patch.pngDownload
�PNG


IHDRL���v?iCCPICC ProfileH��WXS��[RIB	D@J�M���Z����J���b/�
�],`CWE] vD�-��/��(��.v�M
���|o�o����3�9s���w�>���rQ��������46�	�3�4@��e���hK����&@��5g��?��k��� qg�y���������
��0@�*q�W(q��S�$�s!n�L���Y0�@�](����]�B�m6��yy��Clmd+�}2�����f��&��5��sQr�$_��������\E�[Xibyd�r�0o�s&F)1
�niFL,�z��U��T�"2Im����0g�����	�����h
��)	�AW:ER�K���������f��x�/�6S��h�s|�����CENG��Z,�i�1F�81b*���������$Dil���1�6rE�2~k��E���>V�)���������,��b4x�81R��I�W���]I9I�:�����s�B��s����I	�����x�X�*��������%o	�G~a�f,�\�Z���%������#�����@4��P�
X3�D�
$-�u��N��@��8k��)�)�&�"�D"�?0.D�+���2���� S�[���@��@.�W�FI�%������;V�7Ve�����o2�F�����oI#�#��D����hx
����}��������JxD�Ah#�� �+�!���
��kr��}.p[�����P*�,�8����=!�����
�����������RP� J0����G����2���Gk�@��=?��~�}!l�~��b�f�v;��6v��.a��x`u=V��~o��xr�������2�����]���}�)�w4�N�M�K��l�"��<��e������E��z�R}7��o��G\���;����`�x����qv�����=��P����%��N3��/+`����?a`�� �����:���`:��A)XV��`�
v�=`?�G�)p\W�
p��N������ $��0#��A�w�	D��h$IE��,D�(���<�Y��G� U���a�riE� �H���b(
�GMQ[t(��r�(4�f���"t>�]�V���Z�z����/�^`Z���1���biX&&�fb%XV��`
�9_���n�N��8w�+8O��$|&�_���k�&�����_	t�	���G�F��	��2�v�!���:	o�D"�hG��{1��M�F\L�@�K<Il%v{I$���@�%�I�b�:�n�	�UR'�=Y�lNv'����R�\ry�8�*�)�E�bC���R������m��eJ'�U�jG
�&R��s�k�5�3���7ZZZ�Z�Z��$Z���j��:������Gs�qici
���I��:�nK����K�U������&���c���Z�U�Km���6G{�v�v������:[�_g�N��a�[:��L]7�X�<����t��>�#�����	���m�;�����VL.S�����<���'�������K�������x$L1(78f���X�,+�����u��q�� � ��E�j]��p�a�����p��
��Fl�0���FuF�qcG�Q���7�1��?��`p�������&�&�&�L��\2�553�0���3=m�m�26�6[ev����ih.1_e~��9���a������=&�
�--�,�,�,�Z��|`E�����Ze�h�cmn=�z�u��]�����f�M��;[;���u����xvEv�v����A���+��;|r68\qD=������P'/'����!�!�C�C*��r�9s�����]X.�.s]�\^��6t����_]=]s]���s�s�6�������������0���a���{���!���q���9�s�g��/o/�W�W���w�w��-}�8��>�|	�!��|��~���+���������.�g�����o�`����L��d��zl,����������q
��
y�������B#BKB[�������=��
������q2��<���'�U�zFx��1�)���>�Q�c�<�a$:r���#����Hc�bA,/ve��8��IqGFG��*�$�-~z|s3aB�����!�K�%�')�����&W%�K	MY��6z���/��JR��Hi�i��z���Y=�s�����7����2��x�����M����p �����+�3?�_����eTd���5��`�*a�(@�B�43 sE������Y]� q��[�����������.'6gGN_nJ��<r^z�a��4G�4�l����2'Y��m�����z�Q���H����}�#Ia��I�^XX^�~r��St�H�\��8u���E�E�L��	�5N��>gz���-3��3gY��?�sv���s�sr��6�u����K��0�t���?E�T]�(��Z��`�B|�da��a��-�Z",�P�ZZV�y�`����~^�s���%-K��n\F\&]vsy���+tW��X9re�*���U����|�G��5�5�5mk�����^�l�����7�C��V�T,�x�A������5�L7�n��Y�����-����e[�[�>������_��o/��e�tG����MU�UU�Lv-�F��]�����'tO}�s��������>������zs���>j��8�<TR��N���������q�������#;�Z-?fpl�q�����N��=);�}*�TG���{�G���4���L��sg���n�4�8p��y���/�\���u�����C�y�v���������+�WZ���t����kg���_�s��f������j�-���N��Ww�~�7�>�~��eMV�����6��c����%<��!�x�8�����O�O���?�z���hWx���c�w�����]���/�_�3��K=�{:_�_��^������<�j���}�6���w%���������c����&&}^���K���������d|9_�+���ff�z�T��|F�>��
�>���OX}FT/j`�����`�����2�/|b0@�
��g5��RY���9T�����P�g�����JU�c�/��|13{�p�eXIfMM*>F(�iN����x�L��ASCIIScreenshot���	pHYs%%IR$��iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>996</exif:PixelYDimension>
         <exif:PixelXDimension>1612</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
I�s�iDOT�(������@IDATx���E����=� M:�A�N����iDz��H}��(EA��H���� �A��`A�BCHo��7�9g6������s���zs����g��g�f���O�	@@@@@�c�&u��4@@@@@�	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � � � � � �	� � � � � � P�$L��+ � � � � ��0�;� � � � � �u/@���� � ��%��c�9�����n��1�6��7�t�'O�u[\9v�X7d����P�'Nt7�t�7n��|���,;�-p�
7���z�y���������y7o��^�iess�[{����>��r�_����wtt����\���������O|�������g�������P��;���]v��Q@@�^H��k��n@@�^x���V[��_y��n�m��Ua���w<�@���������&q\.�s��n�]vq�q�G�SN9�������-����=�������w7z��{��?�����=�w_1i�����Z.��UVe�x�g�}��t�I��s��� ����7a�����~�m��&��_��WM�,���z@@�E(@�d�R5 � �@��_����uo��F8��&=��F�`&���w�}w���I��o��_�F�}%L^~�e��[����L�da�_}x1m���������w�#a���9 � �@��0��>�@@r
�~���������+a��;���7�8�����������#�qF�<����W�F���H�D��}��3���g?s��w^�
�J��y������jTDKKK�rZhjjr#F��������������W^q����#a���9 � �@-�0��^�@@%����}�k��{��Q������������������~Vtvv��}�{��.��	�$e�x����h��^z�G���M�p����G�i�P�i0����LQ��I
E�@@�(@��b��&@@� �p����a^/X�
����:,��0����Yg��VYe��r���z�j���Yj���%�\��8���x�C��U���~�#��� ���6�|sw�a����&��4x�;���s��`�_}T�Q{�Yfw��'�������w�����N;��1�u�����5�\�y��D������_~y�G����Cu�����F���������{���h������U��?��)y��C9���1c�'?�Iw��G��}�c�~��0�9�����N��6�t�p�C9$���
g�z�-���'�|2�>��:����/������{��p����+<^O/�����o���{f�fx�Ior�C@(G��I9J�� � P����[����������g���jL_	���:����n���t#��Gu'N7��]w�ps����l%L�Yg�pCZ��qO�7�y�{��]vT�����r_��W�c���M���~�-����&�F�����!��z�u9�@��~�Ug��������3J��_C���y��w����e����5)	��_�:<B����u��/�K���|&Tq�u�����}U������Qu���D�����^��{/�����9��c�<&����_����]CCC�z����=DJ"u�J�O���� � ��
�0)W��@@2�o��T�������3��?���j�_������#�7j�"w�4��W�D/��/�;v���������W\�������������M�j{$W�'��{o��g�����
=�6��t7-M8�6�����v�l�I���H��:th������~���?K�_�v�e�d�F(A���&����/N�t���E����J(�s���g���g���r�������.��"��Fw6���&tP���)J8j���>�N;����P���_�;`�w9�h�O}�SaT�W\���G���4�4�E���]l������N%<4i��4��v�}�{h4����n�&O���=�\w�}������IF� � ��B
�0YH0vG@p�V&��j����i���?����k�u�����_�����|[[[�������$LF��}K�%Lx��Gr�I�5�����[o�5���zt�`���_��Yz�:�n����
�QBD�=���4���xzWOL���h$F5��o|�{��aS�0�	C�JQr���)V����Zw���������e�,M�hY	��7�X����:�[n��
><<����h�G(1�>P)1��{��O#hv�u���]��>�de�<����(&
3 � �)@�d!��@@�n�D��f�mB�_�����F���Z��~���/~�����5�)�d&a2����&zK����'�
kD���'�R����7�K}�`����Yz�J&����'�G����w��{���/��rxd��n3�W��$>f�����;��Zk�*�=���I�������*��Q�#~�U����}��a^�J�N=6L�������hK�I�;��#�j�xY{�����o~��!��2���:����P��IwQ�@@� aR��!� �dVG��������~����Q^��s�#���i=�K/����������7�I�,[�;�&zK���n�����o�WV�D�H
��X�)U�DI���J�(����|����e�Q�v��������q���)mkLHh��Q�?��[y�����)~���,=B�����}.����r��g����ry�H^�����+��k�����;��N8���b{������qz��Fm��0���
@@�2H��	�n � �,'L���9�R�h=N��^�����K�\o2�0�i3�5�$L�;>�J�s����{���&�&M�Q�V|�K_rw�}��b�-����N/Z��
%	���I���Z��^J���\����w�tI���&�����;�X�K��z'���E;��S���������}(ZG��T�y@@�� a�0Z�� � �9a���~7��Zo��&	����H�����M�0�7��X6=Rka�T	��'����t.1iGk�1]�����0aB8U�sG������.}*	���W���0JC;�5�����r�vX�����r�.�l����h�W��{����z$�^���Q(����;��c��fJ�E��f���V_}����I�� � �#@�da��@@ XM�\q�ad�n|?������G��f�������p��}0�@7�Sg�2���c/��}��z���	�o�O��������S��?C��X�)U�D��Za��^����t����n���r����v�#��������6mZH�h��__��(}$���>���n�P^/|����*�3z��Y�������w���0�;w����>����L�>)���#$l��inn��:��S��B�)m�����K�qy�'a"&@@���0�e@@�:��0)}�to/�~����[nz����|5H����p�4�D/����B���_��K�P�8*�.�(���R%LJ_������D�v?����{A���'1��z��ad��K�@�����l���n�����^��4��������S�{B����.wa��>����w�(�����x_K�(�k��6<�L�TQ�FSo��ztW|�	��� � ���/�dB@@�.�O�����~���Dz�y����k��F�����v��-d���hw���Y���_�6�����oJw^t�E]����_b��/��m3�!���f}�_����l��U��o��������9�����m��]���������������L\Wz����q�qS�y{v~���O��y��6���>�����Q:���M����7���z��l�O|t����Va��c9����<��3�{��G���d>l��,k��G�du�w�}Y=p@g�]�3gN�O�d�6�t�N?�'����c�w�'���n������%/&@@#���d�(� � P����7������o���rz���_����_��e}����aq�m�
��t[����U~��YX`�&�����r^xaV���o�;�<	�VYew�5�8�7#N�����T��������/�M=>��~�(T\Qz�q��:t�{��W�*��s>I�F���L�����Q�����z��'����n���
�����^��UW]U����s�q�����9sfx�V���N���od��p�]v	�}�{a��z��F��I�g:������&��%.k��F���,��O~�a��c�I��@@`aH�,��#� ����n�������azd������e�q�n:��������9v��p�w�����������N7�K�T��������)M�=��[b�%zT�G������o����Bu=
�{9��u��g:�������Wo�K&JH��Wz�z��g��V^y�.���'��������?��3��L/|�T�"w%�;���z����I���~�V�PBII����*[=�wy��ww�=�XH4)�T:�1c~�U�����}�	'�w��u�S�69����W�%��F�MJ*m����� � ��-@��l*vD@�7��������)$I�Ro&����;�V�8q���G>�V[m����lli�D�ZF�F\�<5D/?�kR{4R�?Z+�2��L�������z�8,�D�2�,��l�z���>J�,��r=^���� �{����k��V�����Z�X17i����&L � �� a�B�:@@@��%LrTGQ@@�	�A�Q@@H)@�$�&u!� � 08&�s� � � �L��I2J*B@@`�$LMGA@@@ ���	��U��W^��
��bjA@@��H��M�� � � � � � `U������] � � � � � P�	����@@@@@�
�0����@@@@@� aR6;"� � � � � ��U&V{�v!� � � � � �@�$L��bG@@@@@�*@��j��.@@@@@([��I�T�� � � � � �VH�X�Y�� � � � � �e�0)��@@@@@@��	�=K�@@@@@@�l&eS�# � � � � �X ab�gi � � � � ��-@��l*vD@@@@@�$L��,�B@@@@@��H��M�� � � � � � `U������] � � � � � P�	����@@@@@�
�0����@@@@@� aR6;"� � � � � ��U&V{�v!� � � � � �@�$L��bG@@@@@�*@��j��.@@@@@([��I�T�� � � � � �VH�X�Y�� � � � � �e�0)��@@@@@@��	�=K�@@@@@@�l&eS�# � � � � �X ab�gi � � � � ��-@��l*vD@@@@@�$L��,�B@@@@@��H��M�� � � � � � `U������] � � � � � P�	����@@@@@�
�0����;w�{��g�=�%�\��3��>S�Lq<��{��W��K/�>��O�5�\�566���t�O<�&L��&O��6�pC��&����G���c���^s�>���8q�;vl8��+��c�����w���{���\gg�7n��`�
\[[[�n=�s~=*a � � � � �@]
�0��n�����6�t�~�~�]vq������s�
7�/}�Kn��i]�o��F��{�q�,�L��Z����������.��2w����X�D�I'���9�����E]����{l{����{��^|��.�F�������<���/�����2 � � � � �@}�0���W�B�����	�{���m��v��J+��>����w�}��r�-a�F�h4�RK-�U���l��{����w�1�Z��o�%5.��Bw�Gde4s�i���O?=�S2f�-�p����uJ��x��a>�1i�$�}�{���JI�����_L�<���a�J,3�����D@@@@@@$Lj�{p�QG9%*6�|sw�w��
%�
�utt���Z+$9�[o���������"�Q#BN8�����n������a���/w�rH��5k��k����w��4���w�����o���*a��:�]z���h���:��r�)a�c�=�e��1��.���P������/��������������!���0q����|"� � � � � H�D����'?�������Fo�����d�����d�}������/�]r�%N#O�������6��=��#��#/��B�2o���[u�U��+���|��a^#K4�D�F����
a^�Q]���zH~h�UW]�M�>=$J�p��G���??��\w�un�}�
�z\�k��s~�N>@@@@@�$L�D
}�1T---������0�c���#;�����x���G~��=�
:4�;��s����K�?~|x���G~(1��;����������g��N=��0?o�������T��x��P�C��5jTX��`{~��2� � � � � ��H��������wk��v8s%�y����������~x�V|$Vl�����n������z(��>�L���\r��G�<��S��"Z���[n��gN<����e�]6�E��f�4����w�>����v�),��"Qr����uJ����e����7��=������2������ � � � � �@ a%j���np{��w�g|����;,�'>��s������[��qF�8ijj
��r��'��w���osJ�t�4�CIM�2g�7|�������]+�'�X����tX��%:7�8��MzlWo���o���y������u~�����:@@@@@�� aR�}�d��g����6�l�6�d���=�+Nz�GL����:����s�~����w���G^��W�_I��n�����na��d��W����B���Q��3g���[.�Wz����#d��v�m�W��U�����3����+��g��������k��q������A���#���A@@@@@ 
�0�5�z�F���qz�����
%/�}���n�%�pk������������'q�.�J������]%zg��7����c���{����Yf�.�k��k�q���X?y�d��i����r�-Y��������V[m����;���:��c�F��;�u�|,���4�����0a���/>v,�Y��_���rvc@@@@@���j�Z�H��h�i$���s����{���+�t|pX�=�u�����.��G��#L��GJ���k�eI����r��G�UJ����g�������dJi�sEIM���#�VZi���)�?��������n���2�����(���>5rG�7cB@@@@X����F��4J$>>+�Gd���r7�x���&z�HKKK8���G����/�_w�u�:�l}�
7��
=���SN	���Gb�E/r?���{��{K���?��N�@]t�;��#������[o,;������;}~���oY	M:O&@�7�8
��/zk�@ �q"�%5!`U�8a�gi���,�	���|=��|~UYz����1\:�����������?���=��_���[v�e�������?{�Fs(a�}����{$�/���N/s�^�W��UH�h��Q%��~��u�]���f�rC��^��z�{X{~=*�g	�~p��A�� 0�qb !�#�q��$@�H�� �Qbp�$L�V�Rz7����;�����+_�q.O=���h�������������%5�I���.=�J����w��������555�u�E�a����n�8�]u�Ua�J������f��J��y��w�:�`��:;����[o��V\q����+������;�<	�����\��@���	��|@` ��@BlG�(@����$a28�����������������'�����|<�@���hz����G?�Q�[���PLrh��o���f%d~�����'�#&P��4���_�����n��V���>���KX���3'�ZQ����r���/�&=�����{���\i�%����c����^r���z�4���u��I��%�A���������#@�(G�}�o�D}�?�G��D9J�� ^���0��W��g�qF��+��8��s���C��C�w��QX��n��|�;a^����1r�Hw�=������rJT��I'����<��^~��0�D���������]kk���?�����F������c�t���������k;=�k���wzQ����F���	&d/���<1�����,{�|����������{�s~�l9�$L�Qb�[����Z�@9��r���� N�w��z� N���>  �E��	�|~)=o�<���[�Gy$_	���[�=���N#74����^{�1bDX�/��BxLV�g���n��)�����l��VN��jkk��h&���+����o~��������Y��/��^�[���S��t��%q4rE�1:%e��_����*�����`�/�����@BlG.D� ��@�������	� 0�qb !�#�@ ^D��}�0�[�Ki��~��l�I<!%�:�(��o~�����v=nK#E~���*|}����3��^�e�_���B��mW�����w�n�m����C=�5Z���F�{���c�J�]z����^Z��m��v�=,zgJo�`���z��#a�]�e�.��Hw�@��q��� �]�8�]�e�.@��.�2�%@��K���$L�s�����+=K��{=VXa���u�����g�
�I���g���2=����^s�&Mr+��r�)}�I�������-K/�txT��!CJ7�:�Q4�?���y��������_��0�O�m  .D� ��@�������	� 0�qb !�#�@ ^D��}�0���D��I�t4�D �"9�(�@�'���i&9�9�(�@�'���i&	��I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.@��x�<p!��*0.@�0��4����T��q����y$ ^��$a�����H��`��@.D R���;��!�@�8��*0.@�0��4����|�$L��Q��	�L�H ��HD�@��q�x�<' R���;��!�P�x���I>?J ab��i	�I�H N�`��@�DD�@��q�x�<
/�a�0��Gi�$L�w0�C �"	���	�L�H @�H�H N�`��@B�E>L&��(m\�����y$�B$"U `\�8a��i	�	���	�L�H(@���I�$����01��4�\�$@�
�'�w0�C �q""U `\�8a��i	��0I�����q&�;��!�@���T��q����y$ N$@�
�'�w0�C ��"&	�|~�6.��)*@IDAT@��x�<p!��*0.@�0��4����T��q����y$ ^��$a��������U�i��n�����49������gsS�_�?��������r�����>~�S���B�0����Z����	jK����/��J'*��1�-�Dm�g�@%��P�����"_��0��Gi�;���k[�c���m-��LI�����I��x),��/����N!�SL��&e��	���m-�566�P>$v���u>��5,��s@jI��f��t�f���M�������3;������>�]1��-��0V�i�?1��]���t_�+���+&��]��[�x�u�\��p�{X�l����}/;�<?��ma{������G�>��Ma���~]��wf�i�����������VYy����z��z|�uV���_�]�B=��-��B~Zp�%����::����|J���t].9NVO�8%��vv���xI������}h�����~*]\�����}U��W�R5�~��u�}B��u��VW��������QX^P6�_n�s��-�/�)�kA��P�o���V.����Gmtc��_����'�'j�9�qb�s�/��$	�|~�6.���\��������)�nv�1���nt2�g�f��-��0��p�T7D�R4�!�
n�On
��FmpC[�n�gx[�Sr�i�X���t�������;C�cz1��d�T�3#$@:�t??m��.�t�������J�I�1	���b�S\�1.���W!��wOB�&y�1����Z�������%
	%�]	�Bb������\��Pg�/�����k���/���dFi�##n�u��p.�}2!`Y`�%���\�r��m��'���h(�Q�8��95.@����$L��Q�����������5���
���5|�kls�����-~y����[���m~^��k������!��h^��DJL�i�I,�|Be��zfI�p����.J��t��{��B$��PR�'>��#>���q�_7}�Ox����H���������!���J�d���Q���k�	j=�1&h��l{q�_����DD!9��EL&��d��qDEL.(���BYm�������E'p�7������w��\���
�!����������|_&��(m\���?�VmN��Sg�D�/>��*��'cf7��KL�d��Z��QRF�%abr�j9�kf�Wh^%�����8��']���K��*���$]�~at��gx�O�h�/����E}!2�?F(>�*$>|bc�F�h��>����$�� ��*9
���2o��?����������e����?��������?5�P<��7E�
��iMa��Nk4���?~j(V����� n���:T&L����hE����e����eU����ua{a�6��%e�[��v(������SSl���r\V�GR���&�~]���hh��
~����S��s�
�MNe:�zmkY�O(�uq_�S�Z��:�z��Y��:;�v����z���O��~]��
u��m�s��~��uS}���%x,���^���hu/@�����-@�(���I����J
�<�-��[�S{�F���v�p�#c�CRE	?��8ZF�a������Bbfv1y3�)���fu���_1!��4Zfn��T�)7w��7r�m��g�k���i���nvv��e�d���y}6vt]��`*���w�����>~�������|��n�6�z�u�:�1T._e�~�}��j�f7�?#��??�yTH�
���K��aJ�(���0�D)��#]|�%�l���6���-��t	�=nl�-��g��5.���w����S����`Hx�U1�QH�87�o��4d�>������3�}�����d�p����inD�t7b�t7��[aB��ho����	�DM�^����I�F?�.J���%e�r �]/R�&�l���5��Mz)��_�
~Y���w��r���o�������B��v�V��c}�=-���u���:�����Z�������U[����=z��,l
�e�-TQ8�j������a��A��~���zm,��K��Y��QJ�����f�#���
w�-�/Ko���Z[�{[�����m~}c[�k����K`a�'���9X\���%�q�}�E�>$a������	��j4a���������I�N������*~Y?��?��c�F��x����g�(�P����J"��������APb ��e����Th���	e��_��*�uJZ�P��������l9��JZ4���78�h�f��J�G��a>�2����\��4���Y-#���l}�(�2�*5�(�L�����}�����R������t)�t�~y�8�CI���y������Zv���g�D��_v�w~h~��x�+����:��~��O~��0|����^	�����B�c�O~����w@J#�T�@����DK�O�(�������NI%X
�����r�O�}&K���2Y��X���5*��g�)����&�A�����,!�@����m��B��%��[�}�s���!���~�u���:��q����97~�q�~]X�;�o��~���?~���[��4���66���07�a���,>�23&[�����R�1���~D�%`�?��;\f�_�����%>*������s�����y5l~!2"2�'>���>2�}�	2�5���� �� Y�������%���n��_����^g�|��������.w�����|
z~�����a$�_�ZW��wZ�]�(�r���:���K�Oe����	c�D�oe�/�r�E���4��`G���\�bd���q������9K;�}}����w�����)~�q���u`M��0�������&�l��O$;T���!��L�,�dKX�I���QrFI��x���^��	I�������}�+$o��,!�@`V���.J������[
#\4���vi���S���/-K&8z�W������G^�G]�������z��F|��O�_�G^�����=�a�0�4r�k1�5�Z�0�?�+����E�A�<���I�a������%�!���*�����W�B�|���|8��7�z���Xp�P�������:9?��T������OaEv���YXW,>��?���@��R���������(��n��;�g�����m~4�����������
#!�Yz)�Z���b-g��8�x�?<�=������O8vGa�p:�/�GV�xY���&�U��d��1k���*s���;o�s]����z�����Y�5�.�
Y��n)��-���+�]��)�Y,�)���G�������&�v+�pC��X�Pg�8�����_��]������T��]���&�e���ka�p�:[�z�z��S(���O�:u��U�����7���C����*��n~���	�,�=V����o/�}��j>+����w���z��R����qa��������������r��s���~����i����>������������m�=
����2�����!�����������(�� ���=����Y�=�z�f�������0r!a���u��PVI!���b~����������S�?���l�N���:�q9W���D���?�Z����~[�C�q�v�|���u�-~�p�����;���Yb��^f	�Q�.�XP�*�(��9�������k�l��]���������y!����{�c�������3�WZ�w�p�b�\L��{����o	���>N~Q,����>�X���a4L��bR&$h
�_���H�N?JFI�B����e��4A5����BRFI�n��x������(\4����.�.��_@�BK�~����/�	g����E=��0i�>�u����gN���Mz�l�p�F��Q.>�2��'U����zlX��b��`���(��Mz��>�/j�����
�>������������Y�s���}�QJ��*�������q����h1�'>|�C��iV"�����~����G��[��!P�r����>�psL�q��DO�A����M��M��~��#.KoX���$��CN���P��W�?c�H�j����L�d�=4=��L��t�q�����tSR�}��hts���~���?��u�_�X3!�@���M����)�$NH��rZ���O�_���\M��6���~���~�}B=���}�~���������_��2����(�a�l�T�qW7�B����L���@
��W!YS��V�&�>��@�w^���x� ����K�����CP=16�EM�bHJ�����1V�T�Z��Z��eLe	�0)����M�ZN�,.�vS~A�eA�%$c����k���zH"�_������5�_�1��������_���F_.{���
��D�z
u�,�+$9����.6J��>�f�_�����k�1�'R�g�Z��|r�}��4�'X�:%Z:|���'[:���<�m�.J��.>�2���eZ�������RH�����9~�>g��-~tKk�?��?�j�����>���%>Fw��t�pC�L�����#�o�8rdHv4���Jx(�~�H�%|��'B�F)�QL��O&�/P
	�����j8��)�������C�pk,�o�.��e��+��h��O����e
�����(��r������SbF���Y�^`W@@��	{}J��H�d���@�M�+J���	%Z�+��DKX��%_�OX��w���x�_`,�/�
>�G_-�1:,7�,�����Q ���0!�@eH�T���Q��m�{����:b��n����L�����0�EI��lQ�F��F����TG#�c�������u1C��f:�E@����(?�R�������f}���O��e��Q�a{��1���~{('��`�f��������k�B���Z,v�?&����8�@��S|�e�O��,��#Y:�����)�x�H�0�E���l��>S/S��%]C��>�����j��%
�����/����K_�N�	�E�Z�u������?��v��w�g��!�g��d�������?�#��~ �����e�I��vm�lq}���v��
��j����Y8���u�����3S�k{8H��
�+<�.��~�����)����PCB�z~��~��qz�F��������
�������L��Xz���P[c�����s	��+��+������K}C��zunY���c��Z���p����r�}_����o�����&��q��d~>�,���p��p�m�M��
��������M�B=a}�f[�W<F8^�1�������B����G�W�������~��!C�M��I#�����?���G�����
��]���g�~:|���Z��S_�����Vd��:�����XOxT�~_����������^�����Q/+�K���#�N�N�(#�.������u��T(�s��{������cDK��C����S����~�������~��%�*��S�1��<�u������Q��e�����O!6*���h��������O �dC�'nWy���.�sC�,�A�
��?1��X��1i������/�8���bj8_��o�i`&�G�0�����U!���%Y�j��[���2�������3{�����������'9����z������4j���>�>�����M��-@�dq��?��/�u?�i�?,XwL�;uF�r�'����hi�5���
�����~*$���x�U7c�����i9�����P��0�����1�	���v���tM&o���C����gY������z��'�Duw�_��~��{���(������,������)�&w|�7#��b�P"�)�@H��$CH>��')Br�K��������_/���0��Gi�$L�w0�3/�>������#��c�4�%<^�0��z�X�F���bz�>����!C\�p��+������G[����O%C^���s�F������'
D��	�,�s�T�oMnw��|J���#���.�-3S{����3���-@�X���� ^��;&��(m\�����y$�B$"U `\�8a��+�����w�#_s�R��?���6���o�5�S�8�8�9�-@���$L��Q��	�L�H ��HD�@��q�xW�y�{���������/,�>���5SM
'j��8i�qb�rs0jZ�x���H�����q&�;��!�@���T��q����P�~r�4���s��i��n���d����q�����E���J�sLjS�x���H�����q&�;��!�@���T��q����P�nyt���������d���v��efjK�8Q[���"P	�D%�9&�)@���o$L��Q��	�L�H ��HD�@��q�xW�yO�<�}��i���Y������l��� N�Vq�TB�8Q	u��@m
/��	�|~�6.@��x�<p!��*0.@�0��j�{v�#/� ;������������-�Dm�g�@%��P�����"_��0��Gi�$L�w0�C �"	���	�\���~����_��9���:jC�8Q��Y"PI�D%�96�%@���_$L��Q��	�L�H ��HD�@��q�xW�y'\1���v{v�0�}b��l��� N�N_q�TJ�8Q)y��@�	/��	�|~�6.@��x�<p!��*0.@�0��l�O���zznv�l7���&C�efjG�8Q;}��"P)�D��9.�'@���g$L��Q��	�L�H ��HD�@��q�xW�y�?>�]}���>�Q�;|��23�#@�����L��q�R��� ^��3&��(m\�����y$�B$"U `\�8a��+��'_���{���>�r�;��%�efjG�8Q;}��"P)�D��9.�'@���g$L��Q��	�L�H ��HD�@��q�xW�y�O�p������Z�5'|$[f�v���W�)� NTJ��"P{��|}F�$����01��4�\�$@�
�'�wp��������y��Y\��%��#�efjC�8Q��Y"PI�D%�96�%@���_$L��Q��	�L�H ��HD�@��q�xW�y']9��4�=;�o�7���Zk��Lm'j��8K*)@���>�F�������I>?J ab��i	�I�H N��
7�������������v���l��� N�F?q�TR�8QI}��@m	/��	�|~�6.@��x�<p!��*0.@�0��n����~����Yl�A�;j��23�!@���~�,��q����� ^��/&��(m\�����y$�B$"U `\�8a��+����9��q���,V_��}����23�!@���~�,��q����� ^��/&��(m\�����y$�B$"U `\�8a��+��)3:��Avm-
��>�-3S����'��J
'*����-�E��"a�����H��`��@.D R���;�
����&��;�3���%��#�ef�_�8Q�}�"Pi�D�{��#P;��|}E�$����01��4�\�$@�
�'�wp4���?t�xc~v&'�=�m���23�/@���>���q��=����E��"a�����H��`��@.D R���;�
�w�o���=9';����v�th��L�'���8C*-@��tp|jG�x���H�����q&�;��!�@���T��q����������������d�z����Gf��T�q����3D����J��G�v�����I>?J ab��i	�I�H N��*h�����N�zjv&c�or�2:[f�����G�!� NT�8>�#@���W$L��Q��	�L�H ��HD�@��q�xWA����t�pr�3���KuYf�����?�� @���^��
�E�~"a�����H��`��@.D R���;�J�w��?pSgtdg����t��n����n�Du�g�@5'��8jC�x���H�����q&�;��!�@���T��q�������z�T������{�t�Vo����n�Du�g�@5'��8jC�x���H�����q&�;��!�@���T��q������]~�������f���>����23�-@��������D5���@m/��	�|~�6.@��x�<p!��*0.@�0��U��{���.����l6�D�;n���23�-@��������D5���@m/��	�|~�6.@��x�<p!��*0.@�0��U��L��N����lVY�������ef�[�8Q����!P
��j���� ^��'&������)S�5�\���G���i�x����+n���v������k���)�O<�&L��&O��6�pC�d�����G�k���}�Q7q�D7v��p�W\��s�������������K�����7�m�������r�9�~+�I�$�v�B��$@�H��)�����w���Tu�7����B�
'��o83�E�8Q-=�y P���|}D�$�_U�>����W_����#$N���
7�����/�i��u���F�{���-��2]�k��>pp�����zl��������c�'�t�;��szl��]t�knn������v{���{���l9r�����B����0���^G_�$L��a=D.D�� ��q�/��8�����:�jz�h��G��ef�W�8Q�}��!P-��j�	��� ^��#&�����!{��wv>�%L���^��v��}VZi%���~�������[n	�4D�A�Zj��D�h�m���=���a�w���3�������^x�;��#����i���N?����d�[l�4�����������s��IN����{aYI�����_L�<���a�J,8�����$a2��@�� 0�qb !��8�����W�P�����G�M�l��|V�q��;�SC�J�U��5 @���I$L��UEi=�j�u��2j�{�D�k��VHr���z��W11����>$E��9���v�t�Mn�=���_~�;��C���Y��^{�����N������6lX���Ye�U��A�.���l4�Yg��N9������s�n�i���s����B}���c�����_w[m��{��WC�G#a�4���e��$aR�� P�\��w��z� N���>)~����?����c�P����k�l%3U)@���n���*�DUu'�@U/�u	�|~/������v��)=��	�d����(�����������/�K.��i���;���f��Gy$���^�R��7�p���jXw�W��>8�kd�F�h���VX!��=�k��W�� ����������D��>�hw���������������aQ��Zc�5��`�/�Y�'	�r�����B�����#P�q�%�I!p�����w����t�V���Ff��T�q�z��3C�Z�����/@���G$L��U��y��������e�]6��8��c�9uO����G���%���)���={�:thXw������?>���1~����-=�+��PbF	�v���}������3�8��z��a~��y!9�Gu�.M��a����5j���G���J�h���@BlG.D� ��@������J��������0�n�e����-3S�������j NTKOpT��"_�0��W��&Lpl�A8�Sd���n�}�	��&�����������o�z���=e����K��q��SO=�)��J�l���=��x���1^J��}(���F�|��������;��SXG�hDIL�(���VZ$�o�����'�/������_���YA��6!�@�B�/$@�H��������w���Tw�7�����J�8QU��� P�����N
�� ^��&��*Vz���n��q�����au�����0������>�n�����KSSSX��('�|�+}�����7�����(��J�h���������>���:*���������4�D��'y�I���m�~�����5�������6�Vo�H����:(�B�T�y�M�8��
����|����#��G_^���ts��Lu
'��_8+�I�8QM��� P���|�C�$�_�J��_u?�����E4�B/\�/a���+�r�����������y�G_)Y���m���v�m����W���+�(��v�aa��*���r��e�wd����Q����wk��vX��1zKl��1c�+�����V���~��k�
��?����:�#F�Zw_+I��%�z�\�D	>@�/�D_2�_g�0�=��jR���m��l�����v>�C�8Q��Y P���j��
�� ^��&��*R��{�uzg�&%4�DS	�5�\���Wz��O~����?�y��7��J����o�����a���{�-��2���k�������a�	��i����r�-Y��������V[m����;���:��c�F��;�u�|,���4�������s~��c���>I�$�v�B��$@�H��)�������Y���l��g���l%3U'@���.���:�D�u	'�@�
/�u
	�|~�������4ZD	=��[��Vv�%L�#�=�Pw�e�eeJg������Gr���kY����F�y��a��%����#�����,�RZ��g�	I���F���Zi�����Kw����sOw�M7e�a����n�����0��U �E��., �@/��^PX��|v����Y���lq��}T��Lu
'��_8+�I�8QM��� P���|�C�$��b/}���������HZ[[�s�{=~���e�����?��O��!{������]_�0��GZZZBY�q�q��g�}�����a�^����f��3zt�)����Gb�E/r?��������[2~�����O8�����.rGqD�z������:$Xv�ygw�w�������&_|q��
@@��xgZ���#+d�3z�\w����ef@���N��Z��af``D�K4���%.q_q�Q\��Qq%E
���b4�+M�����I\0&����_1��2l��[��������w��������{������~�U�Iu!�����������I�2g^�>y���W���O�A$��~�L1/[�0aB���|�����/��y��y�%�5\�i������7��#���\~�������<���Q��l7O���J�x�	9����C���/UUU���'k������kv�V6�0i�] � ����3��\�%��3g� � �@{
�0iO]��#p����y�{��Y�fE/m7�L������k�������F��y�H��<�W]���2?�]'m��455I�.]�m��G��2�F1O��w�}���0
�n�������JL������v�'X2���y|��i���Zk�m�������Nj��e������*&�~�QW> PL�:QL����Z/_�h����)�e�ou�s��N$/'\I�N$-#\��^���'L�����w�j8d_|��a-�}�Y�u^f��!C��n��>1��4P���&����+'�p��,����8��h�i�D�e�,X� zj���AN<�D���{�]�����rK1O�d7_2����3
�?�P6�p�hW[�/s�8�i��Q���F$��=q�q�8���o�-o~������z��[T�9��	P'�����	P'�����
P/�rC���/Q�[k��5/|7Og����3�<#�����F��#��K.�b���������qM�2%z��l8���d��Q�{S>����+�>������������2�CYo����/���7�\��y���2o�<9��c��O��&M�d_�n��i�L����o�/��~��i��3�����2k���aG�c[����O���N�Q����<W�{�=��v������s��N$/'\I�N$-#\��^������_�Vk�������d��;���o,3g�����G�}��G��+�������S�A���z��s��2n�8���3����_�e6����/~!W^ye����i��'W������={�i�d�'N�u�Y'�g�i��e��M����@�> PL�:QL���^yg�\��{��6������$O�:���pE$M�:���p=$W�z��&n~�Z����1�]�y�H�N��]���-���+����o���r��WK���s�g&���J��b�����7�(���_���������5�ix��������J�=����g�B1_�u��w������{X�;S
����
�'
�|� �/��H�s��N��0oo�O�Y,?�c��3���,��]k��'@�H^N�"�&@�HZF��+@�p�

7����3g�������$���~������wM�:U���KY{�����~�I���c��y�e�UW������*{w���E���w�s���V_}���eol��e�#L�$_�9�p#�/����"�;B`����?3fX��9�d	P'����$
P'���	�d
P/��B������h�(O0�!�A�����	�	NhxCn��/��d�n������]��A����W�@�I�
��@2�ny�a���j�4L�'��� ���DN��r���'4��>� ����^�Y�T�>[��.`�������!�J�D*��E#P��;
7?V+�a�<����nD< r
�P'�'8���y�<��|{u�\%'�[m��%@�HV>��(@�HbV�&�)@�p�
7?V+�a�<����nD< r
�P'�'8������r�#
����A����^v� Y��d���A ���$f�kB �����0q�c�r&�Lxx�F�"�@@�uBy���uKd�m3�����Yn?���$K�:��|p5$Q�:���pM$S�z��&n~�V.@�Dy�	��x@�(�N(Op��0�.��F�+�9��$D�:��Dp$X�:���pi$L�z��&n~�V.@�Dy�	��x@�(�N(Op��;������%�
���[6Y���3H�u"9��JH�u"����H���-'4L��X�\��������)P.@�P���w��
���.�Wx�����m���Ar���W�@R�I���@��n9�a���j�4L�'��� ���DN��r���'8��'���6�^�;T������Ar���W�@R�I���@��n9�a���j�4L�'��� ���DN��r���'8�7>\(#j�W��zr�����Ar���W�@R�I���@��n9�a���j�4L�'��� ���DN��r���'8������[f�+�����Rk��#@�HN.��*@�Hjf�.�'@�p�	
7?V+�a�<����nD< r
�P'�'8��
^�s������t����I����W�@��I���@r�n��a���j�4L�'��� ���DN��r���'<�F��O�Zb���z�kw�s��N$#\I�N$9;\��^���������0Q�`�C��7"9������nx�A��g���S�������s��N$#\I�N$9;\��^���������0Q�`�C��7"9������{u��~q�����5KN[�4�'Y��d���A ���$f�kB �����0q�c�r&�Lxx�F�"�@@�uBy���S�ol�W��:r�����A2���W�@��I���@��n��a���j�4L�'��� ���DN��r���'<�of7��7������$��l;g��D2��U �d�D����!�,��[>h����Z�
�	&<<p#��S �\�:�<�)o���`�R{�w��V�Tw�s��N�?\I�N$=C\��^���������0Q�`�C��7"9������.�g�|4m���_W#[}���3(�u��9�
H�u"���H���-4L��X�\��������)P.@�P���w��
�����JO����Cw;gP~�D�s� �t�D�3��!���[.h����Z�
�	&<<p#��S �\�:�<�)�����}���W����r��=��A����W�@��I���@r�n��a���j�4L�'��� ���DN��r���� �O](W��`�t�ow�_����3(�u��9�
H�u"���H���-4L��X�\��������)P.@�P���W7�IN���^ieE'=t;gP~�D�s� �t�D�3��!���[.h����Z�
�	&<<p#��S �\�:�<�)	o���`�R{�����=;�9��
P'���_G 
��4d�kD ��<�0q�c�r&�Lxx�F�"�@@�uBy�S����%|��^�����m��f��+@�(�?�4P'��%��dP/��@������h�(O0�!�A�����	�	NIx���#��k���~�C����3(�u����u� @�HC��F�!@�p�
7?V+�a�<����nD< r
�P'�'8%��e�|���������n2��;gP^�Dy����A�:��,q�$C�z��&n~�V.@�Dy�	��x@�(�N(OpJ������?5���`�.2��>v���������H�u"
Y�H���-4L��X�\��������)P.@�P����7k^����^meE'=t;gP^�Dy����A�:��,q�$C�z��&n~�V.@�Dy�	��x@�(�N(Op�����f������o\+�zw�s��N�����@Z�i���@��n9�a���j�4L�'��� ���DN��r����(���4[��t��������m����O�:Q>{�2i�N�%S\'��^���������0Q�`�C��7"9�������|f�<��F{����C����3(�u�|��e�"@�HK��N�/@�p�
7?V+�a�<����nD< r
�P'�'8E�=�V��5n������&C��s��N�����@Z�i���@��n9�a���j�4L�'��� ���DN��r����(�w>_,��7�^���w�k��s��N�����@Z�i���@��n9�a���j�4L�'��� ���DN��r����(��^_2pd]���7g��<�����WH�u"M��Z(�����������0Q�`�C��7"9������N��^f�i�W}�Y}d��.v��<�����WH�u"M��Z(�����������0Q�`�C��7"9������.���=u��&+~.<�Fv��[f��2	P'���E E��%�KE�����0q�c�r&�Lxx�F�"�@@�uBy�S������o4��>z��r�n=��Ay��q��"�&�D����"P^���?
7?V+�a�<����nD< r
�P'�'8e�=��F�}�\{��l�M��q��3(�u�<��U�$@�HS��V�+@�p��a���j�4L�'��� ���DN��r����,��-���3�^�����u���s��N�����@��i���@y�n�4L��X�\��������)P.@�P�����`��K�����1�����t�u������M�:���q��O�z�fO������h�(O0�!�A�����	�	Nax��X/u�������>���]��A�P':����@��i���@��n�4L��X�\��������)P.@�P���w��g����=j����#jd�M�e��.�u���IR&@�HY��\�(@�p��a���j�4L�'��� ���DN��r����0�?�0W�~��^�����1{��s/@��xs�"i�N�-c\/��^���0q�c�r&�Lxx�F�"�@@�uBy�S�K�i����k�|�M+d����A�P':����@��i�����@IDAT��@��n�4L��X�\��������)P.@�P�����W���Q��������pF��3�x�D���H�u"m�z(�����������0Q�`�C��7"9����������1�����t�u�c��k�Q�:���q��G�z��N������h�(O0�!�A�����	�	Nixg�\/��l�W���e�~]��A�
P':����@�i���@y�n�4L��X�\��������)P.@�P�������f�[.�W?��=e��+��A�
P':����@�i���@y�n�4L��X�\��������)P.@�P�����������h�W��]�d�^�v��c���_C ���4f�kF�<�7w&n~�V.@�Dy�	��x@�(�N(OpJ��������W���+��#{�9���Nt�7
�4
P'��5���P/��i����Z�
�	&<<p#��S �\�:�<�)
������;g���W�Yn9���t�u�c��k�Q�:���q��G�z��N������h�(O0�!�A�����	�	Nqx���\��a}s�L:N�:�q��%�*@�Hk��n:^�z�fN������h�(O0�!�A�����	�	Nqx�o���f4�F�-����t�u����K�U�:���q�t�����������0Q�`�C��7"9������F��-�_d#|h���U��3�8�D�Y��H�u"�����x���9
7?V+�a�<����nD< r
�P'�'8��=������F��������s'@��8k�i�N�5s\7/@�p3�a���j�4L�'��� ���DN��r����8����@�{t��`�
+���{�9���Nt�5	��
P'��9����^���0q�c�r&�Lxx�F�"�@@�uBy�S���[,��>�F�j��r��Z;g�q�����/!�V�DZ3�u#���7s&n~�V.@�Dy�	��x@�(�N(Op��0�.'��C�JeE�&& @��d�)�N�<�\>(@�p��a���j�4L�'��� ���DN��r����<���1S��f����'�����j�:F�:�1���,@�Hs��v:V�z��M������h�(O0�!�A�����	�	Nyx�<� ����Fq�����w���A�P':����@��i���@�
P/��i����Z�
�	&<<p#��S �\�:�<�)��W��C���(��JN�a��3��D�8�WH�u"�����X���7
7?V+�a�<����nD< r
�P'�'8�����B�fL��b��+������t�u�c��+�Y�:���q�t�����������0Q�`�C��7"9��������X"��:�FQ����9���t�u�c��+�Y�:���q�t�����������0Q�`�C��7"9���� ���r�=��TV�lb����v��(�N(H"! �A�7h&n~�V.@�Dy�	��x@�(�N(O���~v�L���%6��~�[6�vW;g�����7�/ �v�D�3��#�q�7k&n~�V.@�Dy�	��x@�(�N(O���~�D�Lx{�������vUv�����o�_@ ����g��G���n�4L��X�\��������)P.@�P�`�=�������l$��JN�_m��_�:�����.@�H{�~:N�z�fM������h�(O0�!�A�����	�	V��)e��
6���S!W�����u�����]�:��r�t�����������0Q�`�C��7"9���� ��g6��7��HzUw��Zk��_�:�����.@�H{�~:N�z�fM������h�(O0�!�A�����	�	V���u9��s�*R��S�6&�'@�h?[������L�/@�p3�a���j�4L�'��� ���DN��r���+	o��3�����Fs���d�u*��A�
P'����#�A�:�!���@�P/��i����Z�
�	&<<p#��S �\�:�<�J����?y�����=���u�s�+@�h__������,#@�ps�a���j�4L�'��� ���DN��r���+	������^�g���v�r�=��A�
P'����#�A�:�!���@�P/��i����Z�
�	&<<p#��S �\�:�<�J���G��n��l�vW~Bo;g��������h�Nh�"1 �1�7g&n~�V.@�Dy�	��x@�(�N(O������$g�Po����$���b��W�:����
�	
Y$:F�z��L������h�(O0�!�A�����	�	V���3d���6�;��Jm��v�����g���"@���I�@���n�4L��X�\��������)P.@�P�`E�]������KlD�[#�������u��l93Z�Z2I������������0Q�`�C��7"9����(���2G^���O~�C����3h?�D��rf�P'�d�8h���1
7?V+�a�<����nD< r
�P'�'XQxO�1_�}n��h�m*���z�9���N��-gF@�uBK&����^��0q�c�r&�Lxx�F�"�@@�uBy��7���r����ku��������u��l93Z�Z2I������������0Q�`�C��7"9����(��9Mr���6���N2z�*v�����g���"@���I�@���n�4L��X�\��������)P.@�P�`e�
9C,Zj����ZY�Wg;g�>���q��h�Nh�&� ���7_&n~�V.@�Dy�	��x@�(�N(O���.�o����b�%����t�s�#@�hW���&���l�+@�p��a���j�4L�'��� ���DN��r���+��qs������������v��}����Y�$@���MbA�}�n�4L��X�\��������)P.@�P�`e��}s����<�[w�s��s�#@�hW���&���l�+@�p��a���j�4L�'��� ���DN��r���+������m�Zo�.��A}��A�P'����"�I�:�)���@�
P/�|i����Z�
�	&<<p#��S �\�:�<���k��TN�vFNTc����3�/@��o��&@���Q�A���n�4L��X�\��������)P.@�P�`�����z�=��Fv�����>������S���6�����'@�p��a���j�4L�'��� ���DN��r���+���g�?Yd#����a�nv���u��)gD@�uB[F����^���0q�c�r&�Lxx�F�"�@@�uBy��w��s��7md��W9b��v���u��)gD@�uB[F����^���0q�c�r&�Lxx�F�"�@@�uBy����[�r���6�]��&�Vc��P'��rF�	P'�e�xh?���-
7?V+�a�<����nD< r
�P'�'Xax�}�X.�w��l�ou�kO�c��P'��rF�	P'�e�xh?���-
7?V+�a�<����nD< r
�P'�'Xax���d��������3g�W�:����!�Q�:�1���@�P/�\i����Z�
�	&<<p#��S �\�:�<�J�;��z�oh���pfYs�.v���u��'gC@�uBcV�	���^���0q�c�r&�Lxx�F�"�@@�uBy���w���?/{�d������7������u�3(�C@�uBaR		�v�^���0q�c�r&�Lxx�F�"�@@�uBy���w��s�/�7�������{;g�W�:����!�Q�:�1���@�P/�\i����Z�
�	&<<p#��S �\�:�<�J�{aR����\�N�u���s~�~=9��JL������������0Q�`�C��7"9����4��-�K��e�[k�.r��}���_��_O���F�����#@�ps�a���j�4L�'��� ���DN��r���+
o����Y���a}s�L�	P'�Yr&�
P'�f���/@�p3�a���j�4L�'��� ���DN��r���+�������l����[�Y���3�'@��g���*@���Y�B������������0Q�`�C��7"9����8����MY�������Sv��23��G��GLN��R����� @�pC�a���j�4L�'��� ���DN��r���+������6���J�������N���Lh�Nh�,q!�_�z�fJ������h�(O0�!�A�����	�	V��o7�MO����I�\4���3�'@��g���*@���Y�B������������0Q�`�C��7"9����8���Z,��e#\}��r���v���u��%gB@�uBkf���7S&n~�V.@�Dy�	��x@�(�N(O������p���9s&~�~9����Kl��^�y�0q�c�r&�Lxx�F�"�@@�uBy���w�-��u}��������������N�q�,h�Nh�.�!�W�z��I������h�(O0�!�A�����	�	V�o�-o~��F9�G����Uv���u��#gA@�uBsv�
��7O&n~�V.@�Dy�	��x@�(�N(O����y�<��F��v������s~�~9����Kl��^�y�0q�c�r&�Lxx�F�"�@@�uBy�����;�����(���B~~t/;g�G�:���� �Y�:�9����_���'
7?V+�a�<����nD< r
�P'�'Xyx�~�X~v�,�j}:��g��9?�	?����	��%6�
P/�<i����Z�
�	&<<p#��S �\�:�<��7`x]N�c����3q�N�r�P'�g���'@�p��a���j�4L�'��� ���DN��r����������&�oN�-�����P'�
9���3L|��^�Y�0q�c�r&�Lxx�F�"�@@�uBy��������[d#=��j�g�*;g�.@�p7�h�Nh�0�!�O�z�fI������h�(O0�!�A�����	�	 �?��'c^�o#=x�*9��v��]�:�n��.@���a�C������������0Q�`�C��7"9���@x�xo�\�H����T�/��e��������	�&>�	P/�,i����Z�
�	&<<p#��S �\�:�<���E���m3m���t�;���s��	wC���v�����n�4L��X�\��������)P.@�P��@�0�.'��C�JeE�&&�	<�"�u"�D&�n�4L��X�\��������)P.@�P��@�;������%6��O�-������	P'��X�@���L���^�9�0q�c�r&�Lxx�F�"�@@�uBy�	�����,���~`��p�*;g�&@�p�c5!P'B�21"�G�z��H������h�(O0�!�A�����	�	$��'���6�F{�U2h�j;g�&@�p�c5!P'B�21"�G�z��H������h�(O0�!�A�����	�	$��?X(�}��F���r��^v��M�:���jB�N��ebD������������0Q�`�C��7"9���Hx_�/���������YF
��sn�	7?V#�u"�,#~�n�4L��X�\��������)P.@�P����0�.'�{�_Ej�w����m�����
���!e�Xp�^���0q�c�r&�Lxx�F�"�@@�uBy�
��Q3�������8��l�vW;g�v�D��X�@(��P2M��P/�i����Z�
�	&<<p#��S �\�:�<��w��
�����_-l_e��.@�h�+E�:J��w���!
7?V+�a�<����nD< r
�P'�'8����|���y6���5KN[�4��]�:�n��.@���a�C������������0Q�`�C��7"9���PxoNY(�y��F��:]���{�9��P'�n�JB�N��i�D�]�z�fH�������|�My���e�����6���;�(}��i��f��)/���|��G�����N;�$�l��t����u�oM�4If��!�n���fB��5u�T��?�!���l�����Zk��Z�;�/�_|Q>��CY�t����Ql�����k���z�e;i�b?p#�g�	P'�	�?-�g5�Y7������$��l;g�v�D��X�@(��P2M��P/�i����m��i���SN�q��5���.�H~��_l�<���r���JC���f�9�v�m'�<�����j��W__/����/i������A�5�n�\r��1��>s�m��&]�6A������#��>� g]MM����Q�$g��I[�/�-�i��$�v�p#���7�$@�hI��i8r�,X��^�]?��>������Z�N�H�X!@����q�q�
G���K����?_��sO�8qbt�����������ODO���'�|��5*'��������h����m9��C�����Gy$�f�1O������3O{���?��_~9�v�A��{�>��mj�r�-r��g�5fp����W\m3�s��	�W^y%�f�"=�P4�����_F�����1M�n��E�e<���Z��JfM[�/���o&�������@�b��bB�O��E�����-��|���z�nv��m�����
���!e�Xp�^���0q�+�j�tF�Aq�����!C��IL���s��[o�5���?�X�[o�h���$�m�Y���z������4F����)b4O�:4Zc�y����������c1��4m�>�hy����<���W_I�=�}����Yg�h|��'��w�i�&>|�\z����W_}Uv�y�hl�9��s���n������-��/���O?�}��GL<��c�������2k���aG�c[����O���N�Q�����t��<i�����!�����M�:�67V!�u"�l+n�7?&n~eY���{GO|���/j&TUU��x���e�M7���Qa�����w���P��i20 g�9�����;����y�H���v�m7�������;����>��|�;�����[N:��hl�,1O������k���?���6�p���a� �����}s���%f2x�`������x�9��c������6�(���2�����I%�A lnD��?�#G�:G�c�"�����������g�J9���v��m�����
���!e�Xp�^���0q�+��	&D/_7����G9����(��/�ox���i>�����O�d�����8�O����s�9R.�������{�}�V���1c4p��;��\y����_�2�.Z�(j����2�2?��MV�c���W�^�,�L[�/����4L�	���3�������&�}�P�?��}�}����'��B"��:���pQ$J�:��tp1$Z�z��&n~�[����^�;�����{�=�d�M��a���d��w����7���3gJmmm�=���������"f�i��'[�.����k���.�}(��S�N�o���e�]���1/�?����M��ELs�|���1�����h�����o/o��V�n�dJ[�/����4L�	���3�������&��9Mr�����++:�����9��	P'���*B�N��mbE�M�z��G���/�M������'�|2��,sQ�_k�����������6�n���.]�D���(?���%��&��������n�u�i�41?�*,����hn�Gr��gG�����w�u�h�y��\�y��<yb~��v��������'a^x��6]_&�B�/���I!�!�@�7"��@��u��
��,0p�Y�h�=����J���i���N�({
�/@�H|��@#@�pK
7�D�6����'�k1_�5n�8������[�;��#g�q�})�]�b`���|��i����c�=&�~x����d����_�����N��������o}�[���w��c�i���w���7�<������~��=c��Y�����>j��l8p������;�o���������W�aR0lD�,nD�0"�@A�DA6�X��{g��_,����v�nv��t�D�f�@ 4�Dh'^�.@�h��YI���/�<�@����������k2Oa�v�m��������_�������^�i�|����J�;K��#Gydt����e��Vk�n���r�q�E�g��}�V�%��<��m�d/���Oe�u��6=��S��s�s�9b�H�x��%������1c^d���[G�pi��e�v,s�b�i�b?p#�g�	P'�	�?m���#/�k������!?�y�{�F%	P'J��`��N�v�F�M��6��E4L,��A��h���y��|
U�+�
$w�uW�`3O�d�=�}��S��&G��[o�U�:��h�y���%K�Wr�������5��������y7J�+����?������������~X2�ai��z7���ar�����&@@���i�<�n_��k5�![��9@@�������C�$��k������\������;�(G}�<��C��;L��G***�5�]w����?���~[��j�h�y����n���������K���w�d/�E��]*�?��%{��G���7���@�i�3�<3�<����w���r�!�D�ki������9
��t�� � ��'3*��7������QN��+;g� � �
���_�������L�#�"�K���n�h�i����:����4B���'L��}x4���o�_�~�8�������k����a���9o��G2�K���������y�������n�&1O�<��r�a�E���?_�����5{K[����[��Wr���.�x���Nb�f�m�S~_o/��������3(]�:Q�+M�:Z����P/�ngV����_��6/U7�#1����[�S���G�+��{K�S#���k$�]����W^�����6�H��������y�g�d��r����}���2�����=�x3����4h����h�y�%�y��>{��i�d����6�}��r�I'�����[lL����@�> PL�:QL��i���f������o\+�zw�s�	P'J��hB�N��ubF�m����eV�0�H��w�	��x��WmS#�yO�i*��F��}�P�!s���ir��=���;u��2d��p�
��'�����Ov���{��N8!������G�3����DO�444��'�(��sO��|���[n�s%���Y������e�
7�v���2�����I%�A lnD��?�#G�:G�c�&��?��w?[d/���k�{v�s�	P'J��hB�N��ubF�m����eV�0�H���5�\#^xat����C���|�;b�C2b��N��N;-����FJMM�<��3��.��iT�5�\rIt��n�I�>�l�1e���i������Q�FI�n���O>������?��)�~���-s���^����o.����Xc
1O�{����'�|�&M�/7s���L����o�/��~��i��3�����2k���aG�c[����O���N�Q���	���\��?�e�w9|��v��4�Di^�@����N��M�z�6��*&��^�d�p���s����z��e���b��0?�Qa^���gO{����}MV���7�Xf��)��O���g�}d���RYYi��A�)��F��&O�����q�d����s3���/3�_��_�B���J�����OL�<�b~�Wv��7M��|�����:�D��?m����b�i�b?p#�g�	P'�	�?��,k����i���}�n2�G5�)�K�N���(@�0���@�m�[�����_�V���_{��2l��f�p�WDO�zq���-���y�I������������{go�c���y
%�l1;L���o������=?~|���L���3O�\u�Ur�������^c�B1�Z���;�7K����|-�ygJ���\_���o�a�/����a����|����b��}�l(���E�����&@�(���Q�:b����	P/���YE�$#����-���0�1O^����9�i)�9s���o�=M������(�^o���<����_��k��O�;M����'X��-���j�U]�9�������w�s���V_}��C���z}�N����IC((��HA6"�@�u"�����K��kg��3fX��9�����V�@���P3O��.@�(�,{
�l
��	�0�a���iF���N��0U#0��z�5���s�Y}d��.v� �u"�G"�u"��7�P/J7�^A�$[�1y4L�@�"�@3nD�����y L�\~�ly{�"�G���w�s����8�P��f��(]�zQ�Y�
&����a���	p#���
 �'@��a�F`�_�����6����.G������N���HB�N��y�F�t�E�f�+h�dk0F O��ISh&��H36 �@�u"������(���k��e�nr��k��A|�D|+�D T�D��'nJ�^�n����I�c�h���0E�f��4#a�	P'�@��x���2��l<�^�����>v� �u"�G"�u"��7�P/J7�^A�$[�1y4L�@�"�@3nD�����y L�,X����#�r�3�o��I<�D<'�B d�D��'vJ�^���4
�|�d	�0��`��)��F��Nda0T'p���R7���u��}d�U��9�x��xN�@�����O��&@�(�+�h&�"���a���

p#R��� �%@���`�N��?��I-{�d��yG����v�L�S�:��X�:p�	��%��N�$�)�4L�5#�@!nD
��
�����	��������6��W�1{T�9�x��xN�@�����O��&@�(�+�h&�"���a���

p#R��� �%@���`�N����r�Ssm\;nZ!C��e��	P'�9q!P'B�>�#P���4���i���0G K��IC((��HA6"�@�u"��:�)�o�\|�,�};��g��9�x��xN�@�����O��&@�(�+�h&�"���a���

p#R��� �%@���`�R`��������3gR\�:Q��#]�:�'���/@��oU�H&�T���
&|@��7"�����	>����^���d������n��v���u��G �u"�O�#_�z����4L
��
�4L�( �@1nD�	��|���������l���S������N7�B�N��	 ~�P/�[:��I!�!�B��	(&��H1!�#�u���v�?�4W��G�
���V������Aq�Dq#�@ t�D���G ��"�U�#i�Ra+h��Q@�b��b?P'�hx��F����6��7��K��e��P'�q�P'B�?����
I���
�X!@����F���@�:�g@������w��a���,��Uk��P'�q�P'B�?����
I���
�X!@����F���@�:�g ���r�3�o��I����}��"�	> W�zW��q4L
���H��	(&��H1!�#�u��@�o���f4�PG�-�����.@�h��� @������"�U�#i�Ra+h��Q@�b��b?P'�� 0b�l���"��C�e�����A����}��4L� �@|�+�[:��I!�!�B��	(&��H1!�#�u��@�m�<2���z��U��}���A����}��4L� �@|�+�[:��I!�!�B��	(&��H1!�#�u��@�] �t�
u�
+���{�9������h��@���W��*t$
�B*lC`�
>
 PL��bB�G���>�f���,j�^���sj��A����}��4L� �@|�+�[:��I!�!�B��	(&��H1!�#�u��@(����:zh_�������D0lF+@��@����P��4L��;l&a����#��H%�A l�D��)�!���/�������z��kv�s-P'Z�a,�N�I@�����R���aR���D4L�  �@1nD�	��|B���y���6�3��|����,@�h��= �\�:�'�
P/�J>��Ia�"	�0�����)&�~�N�E��W������p��JN�a��3hY�:��
{@`�u�O��^��*|
��.lE �a��	p#RL�� @��3��k�/�k�4�p�\�B.?���3hY�:��
{@`�u�O��^��*|
��.lE �a��	p#RL�� @��3���K��[g�pk{v�;���9���-���P'�$ �@\�E\����0)��V"&|@��7"�����	>!	^����}��"g���(lB��DhE�z�
N�]4Lb qH�4L��=�#W���R�@���psb���5S>�z�
�����������Nva+��N��`��P/Z�)���I1!�-@�$��<�����A-@�:����
���.�q�r@���]��3(,@�(��VX)@�Xi�Z�^��Sl/
�bB�Z��I��'xb	p#���Z�:t�������^�g����*9���3(,@�(��VX)@�Xi�Z�^��Sl/
�bB�Z��I��'xb	p#���Z�:t��~��e�C
6���S!W����Nva+��N��`��P/Z�)���I1!�-@�$��<�����A-@�:�����&9��zwuU'��g��9�����.lE������@�u�E�>���0)&���h��~�G �7"��8���A�?��������V�^=:�lc�+@���`����M�����]�n�aW����ad�	���)���R�:d����Q3e�WK��/��������4�N47a�
P'r=�!�@����m���aG�c��al�	�������@��N��`���?y�����=���u�s���M�����\f ����e�8{h��Q��`h��zG �7"��8�`���>��u����y6�l[)g���4�N47a�
P'r=�!�@����m���aG�c��al�	�������@��N��`��G��n��o�vW~Bo;g�\�:���- �+@���`�-P/Z�����I%�	V��I��'pbp#��V�:l��
���Mr���6���N2z�*v���u��	[@ W�:���Z�^�lg
�8J�
�`SO���F$6"�u"�����3d������!��J��v� W�:����P'���
P/
���J�$��)@�$��4%	p#R#�u"�����)S�\b.=�F�Y���3��N�z0C�����&lA�����.q��0�+�qA
�0	2��@I������)@�2��}�_��K�^`N�A9t��v� W�:����P'���
P/
���J�$��)@�$��4%	p#R#�u"���So��{��g���R�>���3��N�z0C�����&lA�����.q��0�+�qA
�0	2��@I������)@�2����������kv�'��s���\f �\�:���- PX�zQ�%�V&q�8.H&A���(I����8� �A�=����4����[���N2z�*v� W�:����P'���
P/
���J�$��)@�$��4%	p#R#�u"���2��#g��EK������j�:�9������@��u��[@�����I)[h������	�0	.��@����L���N�r^!0��Y������%����t�s+�+-!�@a�Da�"�@s�Es�R��0)E�c��a\�	���)��'@�.��B��qs���X����!�}���3X)@�Xi�
P'
���P/������I)Z�
��RN��,��H�d,@ 8�Dp)'�ys����<���V���Ck���J��JF PX�:Q��� �\�z����-4LJ����h��rF�dnDJ&c�	P'�K9�x��Er�g[��V�"������N��`����]�����MJ�B��-�
N��Ip)'`J�F�d2 �u"���
���K��kg�x��7g�d�u�O�Nb?d�����a�67V"@�$�D&��8���@��$�0
�t]�4�k��n>�V�����3X.@�����������EF�m�i����U��0	$�����7"x,E �D �&����i����"�o�Q5��F����r��(&@�(&�~�P/2m���a�x�b����d�M6�Qihh�_|Q��+uuur�AI���e�5��9�	&	~#�@K���$�v�P'2�Q��g���o6����������3X.@�����������EF�m�U5L�L�"#G��?�����k����oU���'����e���v[f��s��~�����X&��� ��H0lF+@��x��F�s�\��[t����s��|@��u���@ #@��H�������Y�d�w�>� �������g[�N8A���?���[om�'���'6{"�� X&�����-��Hl*D X�D��'�e�~�X~q�,k�v�.r��}���r��(&@�(&�~�P/2m���ar����SO=)�x��r��G���������F_�e&�m�����+��Gy��we��7���u�]e��	����0�H�Z�F�%�#�@F�:���w����d��������3g"B��S��������EF�m�U4L�M�&k��V$����F.����SN9EF�m�4i���K2?��s��|���t����/ ���[��	�(&��H1!�#�u��@��^_/�s�,��g����v�s4L� �@q�'�q,�^�}T4L2O�����>}�TUUY��K�����m�y����W_������?�u�Y'���[o���n���I�4L��?�#G��8J�@�����O�"��?[����Q�??P#�����Z����Ndk0F�B��B*lC�B��B*���h���w��.�@��k/y���r�7/~�t�M�mW\q�\v�e9�MC�s���6�����;.g?��h����G �7"q�8���a���E�~n��}��R����G;g@����~��G ��r���'AE��4KL���C�'�|2G��;���O?=�f�)����3w�\���g�i���r�d�f�
��?��@nDb q�P'��<?�Qn{z���i�nr��5v���	�(.��Dq#�@����O�����w�-�
�^���@dX?�py��������s���l|��7d��v�������z�Ec�A��0�s��2�wg���/v(�@ P�D��'l+����r�=��|�U;�����9&|@�����8�P/���^��IDAT>	*&'N�w�1��2e�l�����o��~��E��:H�~��fZ_|��1"��d���\�dC�4L�L;A#P�7"%qq0A
P'�L;Ag	,X����#������7g��:�'��(.@�(n� �\�z��IP�01_���kHCC�����O���F���K������z�!9��#s���'x`�m��w������g�
> PL��bB�G��D���^�7��R\{ZoYg��v��:�'��(.@�(n� �\�z��IP�01����B?�����w�����4Q��~�a{�;��#�m���3@��0�s���)&�~�N�@@��g���,{�d������7��L��M��#E�E�8VP/�>
j&������:4Gd������^�z�������xe~x�{F���4L�E�#�@�7"�"�@ _�:�/�<D�{_�+O��hC?|�*9v�j;}@��@��N7�X.@�p�$�j��y��E
��S��{�![n�e���v�a��O����*�]v����~n��V+@�Dmj	o��x��D��N�M-�� ����'�����B.>r����t@�4���@	���8���nu
�83f�����G��x�	W��I��'r�
p#W��W�:n��|��G_-��F��V_���tf���>�N��	 ~�P'�q,�^�}�l����:$&!e�Xh�7"msc!	P'B�6��&0`x]��1����C�P'B�>�#O�:���@@�z��)P�0Y�p��x���Wr�?^z��-�o���u�Y|����$��4L�M=�#[���T�@���`SO�yg�R/��������������CP'B�>�#O�:���@����g@M����N /��rA���G���;��@4LZ�a3X����`�-P'Z�asp�~h����E6��?������������O���N�s�(�a��P�0����d����c��w���
y���6�L�s�=���h�b?�\� �@1�D1!��"0������m�?�~��O���<�N��}bG �u"�G!�
�������*�UW]Ud�����^{MV[m��f�����n�E���gy��\�X�
���M��Q����F8�!�u"�dj����@nx|�=f�
+��G��������O���N�s�(�a��P�0�4i�l��6���	d�]w�q���~%��
�~����_���	�	�0iM�} `�.|@��u���C�d�b���Y6�U{w����y��D��'v�	P'�9q���p��h�����w�}#���F����q1_����{G����'��w�����h��$�v��\2�F���-��=D���r�=��TV�l
rB�2��@I����8���n�W�07n�x������K�����{��f�E��N�*���n�c��@!&�T�����dk0F�B��B*lU����eZ]�
��'�����j����f���/@��o���.@�p��0����e�
6���L�b�nt�A��IY&F��q�c5!P'B�21���ly��E�����}����P��P3O���N���HB�^�}�?����*@IDAT���T�����]��,�Rl(�����D�J�]��5*�#�$$Fc'�����[�`��]c��E
J� ]�����������lav��������|��33���|�}����������G"���s��D�R8�f��M6�$x��/�����gA`�v�2e��,��S �@>���`��o�}���@ ��, s��<��2�8���������J�8����f��h�u��V|��P/��:�0qd�n&��Kt��B��"k �[�:�;�D�>�7?�������/����f�q=�N�5���@��m����]�z����ab� i�3g��k���������o��#�x��6�������x
�0�g����p!�->�@<���;Q�,0���r����������1�v��D\3O��]�:�v+>�@��n�&.����_?�%��L������B$�,��2��������qS��0�����u"v)'`�-@�h7����-�4L��h�$ap�0��	p!�N��@�:�����V)_}���x����'�w��8P'��ubF�}���y�i�,@�p�����7�|#�����D�����K�.]��a=4L���H��"��e]�P'���H����*ykz�]���Ke����8���8f��h�u�}^|�8P/����a�F�lZ�a��
� ��j.D�K@�t��tB�7�������Uc��H�������x@��c����	P'��������-�*&������z*x`�����&�l�h�$ap�-
p!�"/"�@�u"	�C���^���*k��Fr��nv��D�N��O�:�>/>�@��n�W�0y�����$V�Z�&�l�h�$ap�-
p!�"/"�@�u"	�C�[�R����Zt+����-��8P'��ubF�}���y�i�,@�p�>
7?f+�a�<����.D< ����Lx1na����_K�J:���u"N�&V:&@��������-�4L����\��������(�N(O0�uH�7wV��oW����M������v@��[����P'�o��*@�p�<
7?f+�a�<����.D< ����Lx�vR�L�Vo����T������v@��[����P'�o��*@�p�<
7?f+�a�<����.D< ����Lxx�����j;w��������q��q�8�"�~�D����@\�n�W�0�m��:,��CI�>}:<���h���)!�[������>��������/��/U��~�ag����v��D�2N��_�:�~3f W��[��5L\8���#���sY���h�(K(� �.D2���(�N(K(�xX��A�����UZ�I���Zv��D�2N��_�:�~3f W��[��5L�������4LR=!�@s.D���
�
P'R=!�1na�0�}�����4/����q�4q"�q�D����@��nW�0Y�j���H�a���!�(��H�,��I��$H{W����J���#�d�F�v��D��M�tL�:�17f!G��[�i���1[�
�	&<<p!��%P.@�P�`����
OW�kS���_��E�i����:�l+�Nt��Y�Q�z��u&n~�V.@�Dy�	\�x@d	�P'�'��:,0�����j;��Er�]�8N��8e�X��u�cn�B �����0q�c�r&�Lxx�B�"K �\�:�<���a�g������7]?_�|b;��u"N�&V:&@��������-�4L����\��������(�N(O0�uX`aU��v]��_T�I&�]���t@��S����	P':��,�(@�p���������������|5j���H�a���!�(��H�,��I��$h"0r�"�[���z��r�U�g�q9�N�%���@���c&q�^�e\E������.@��u�A��\��������x?���Xf|�����2������:�L'�Nt����M�z��q&n~�V.@�Dy�	\�x@d	�P'�'���nzv���Q�]��=��/v*���P'��i�D������1��	P/�2N������h�(O0�!�A��,��r�����������_��kT(c.���P'��i�D������1��	P/�2N������h�(O0�!�A��,��r�������s���	Uv�������{�q\�q�4q"�q�D����@��n�a���l�4L�'��� ���D�@@�uBy�	�I�rY������5&^�3e�u"Y&F��n~�F N��l�0q�c�r&�Lxx�B�"K �\�:�<���,���.�e���:7�.�>���8��8d�p�N��1�8	P/��M������h�(O0�!�A��,��r������E�-���������22����p@��C��7��������-�4L����\��������(�N(O0�9���2y��Z��1�w�����q�q�21"�&@�p�c6q�^�e�������0Q�`�C��"Y��	�	&<g���%w66M?�nU(���,1��o�D,�L�8	P'����@��n��a���l�4L�'��� ���D�@@�uBy�	�Y�?�W�%�.���[;_���v��D�L��	P'����@��n��a���l�4L�'��� ���D�@@�uBy�	�Y��f����E)�L��g�X��:�=�����u�������-�4L����\��������(�N(O0�y8��
Y����u�=d����X�uB{��w���!+ ��[�i���1[�
�	&<<p!��%P.@�P�`��"p��%��9��Z�9�LvXh����3L|�P'�
Y��P/�2M������h�(O0�!�A��,��r�����;_\&��_k�:rX��k;�~@���a�C�]�:�n�
�E�z��i&n~�V.@�Dy�	\�x@d	�P'�'������Z���ev��mQ(�>����P'�g��p�N��q�^�e�������0Q�`�C��"Y��	�	&</�}�B.��b�V���r��=�X�uB{��w���!+ ��[�i���1[�
�	&<<p!��%P.@�P�`��"P��������5���)c�����~�~Y�8P/��L������h�(O0�!�A��,��r����7�S���EU
v��O�!���c��	��%6�P'�8�
q�^�e�������0Q�`�C��"Y��	�	&<o�?�D>��x���?�
�*;o^���M�P�^�C��u�#� ��[�i���1[�
�	&<<p!��%P.@�P�`��&����������F�Z,G+�c��	��%6�P'�8�
q�^�e�������0Q�`�C��"Y��	�	&<o�|\+7=���7d����nv���:�9������GVA ��,�0q�c�r&�Lxx�B�"K �\�:�<���M�����������n�<���r;�|@���]bC��u��#� ��[�i���1[�
�	&<<p!��%P.@�P�`��&P��������7���)c��������,Y	����0q�c�r&�Lxx�B�"K �\�:�<���U��*���
v��;��l���k=�Nh�,q!�O�:�����.@�p�0
7?f+�a�<����.D< ����Lx^�������[M~�shW�eQb��7uBmj	o�	o�,��z��[�i���1[�
�	&<<p!��%P.@�P�`��*p�+�d���v�C��q������������,Y	����0q�c�r&�Lxx�B�"K �\�:�<���U��i�r��ev��7-���f�Z�Z3K\��N��d%�P/�2L���/��?��c���Oe��9��gO8p�2DJJJZ�[ee�����2s�L����������f�I^^^�s�S�L��S���E�d���b�	=z�X����g�[o�%����f������q��+��W^�3f��U��x��v[)*Z�����7��&
�tB��\��7�����x��	��n���c�}�w�<���r;�z@���Y�B��u��%+!�]�z��a&n~9�m$c�����z�����/7�|����>��{�����SN��������n;y����w��)��AEE�����3�4{��;��Q�F5{�4:.��������g>�-�H����h@Gq�|��)�������_�')o4:���k�6�a���#�@B����@�5�Dk2��@�#�-Lyc��=S��	�Y%&�
P'�z���n��a��������A�`�������{o1
�o��F���>����{/�����/�������o_9��C�����G}4x���b�1w�$~��f��^{-x����y��lS���n�3�8#1%�}����e�]�����?�P�<yr��i�<���)s���� ���&Maaa��D���w�	��IL�������a�N��@��@ �u"��#�*0��
�vQ�}��Q�e�u�����P'$���u"��,��"��[2i����d����g���������>�����?�$��`��ihh��7�<hr4(���Dc���^
�"fsG���c�z�<��y�����;���O>98������:*���������J�.]����om������'�(��~���d��qr�E�������N;�����>[n��1���_�
����>w�\�c�=d��YA���	�����s����I[���H�����>�D��
P'Z��
Z��#Kd���{gR*�o]l���JL��N��d54P/��K���/'��
&�N��>X�|��f{0M�|0?K�,	�� {��g��i2�1"8N�s�i��m��&�������e���.���o�1����y��I�~������.9����csg�������F�[o����c��k��A���Ar����-]�4���=Z�������?�1t���C�u]�n�ip���%�l�o&mQ�3�[��x���h�u�-J|��	���e������w*�_�Yj���JL��N��d54P/��K���/��M�a����n��w^�=������2?�}�Y�@���M�IL6�7wq�������������������������������1c4f��>���l����/�K.�$._�<h���Y��$�~���1��[�`�����K^7�1
�tB��\��7�����x�T������������@�x���.`_Tv@�P�P�A ����$J�n��a�����������
�C=T&M�$����������]YY)�������E>����k��������7��8W�>}����t��)�������/n6�<<���
^O�-b�(1�7?�RTT'�c����?@o�L�����LwL�$��#�"�
 �@:�D:!�G U`��+����{v��[�^��U�����J8d@�:�T�D@���-�4L��B7{��9����J��#��U�v�<��c��m�q����n�F1�HI~�����o�f�m��3w{����1`�����������;�����1��y������%fo��s���1w�����~��7w������_"���o�5&-��$p!���1�$@�hI��X���qS>0alO)*HyI��:�*��@F�aeQT
P/��J���/T�-Z�A2}��`_��7�`�-������.7�|s��6_ye���4KL���������5�+�`�
��3t?��S������jY{���q��'&�����[�^xA��g�������������93����#G�����?x��{�����u��5e�t&��x��o�	P'�	�>����B������������:����������MY�����0q���~�A8�y����=�x��r��g��m��fb(�k����Z�z��i�|��W��J�3K&N�(GqD��H����?O�0A�;����4l��i%�������K���s��Fm�d��b���<����2p�@i�p��\��1
�A����S;�����%�L���I:!�G.D�@�t��tB��@s���X���i�}��Je���v���:�-������SVD@���-�4L��B1���a���5kV��+��B.�����%��k��Qr�w���$�0I<{$�+�f��m������n�Dc�4KV�\i����������9�|�I��0�%����J��}������?n��<�Hy��G�sX:�����bO��
�Px	R�I�`�-P'Z@�%�<�z�L�\c?u�O����W��}Q�uBQ2	�	P'2��(�^�%����_�g�������{_�e6��sC�:�(y�����g������R����Z�=�\�6m�l���A��a��n����Ds&���D��<�}��������6,x}��)b�~�-��g���X���=��3h�|�����OvxM�]��4Ln���5}��@@@���gJ���w�{��5r���<���@@2!`���Q��a��5��4
~��_��x����}�������1[��7��
����{���Op�x�������p��9L���Ob��g�$��r���so:���4n������U2i�$9��C��jjj�������u�a�������&m��c � �xX��@n���]��h�����;���8@@�
�P�!^�Hn��F��O?<�5��s���1�i�,�UW�+��O�a�


�����x|0H�'�l���?^�������0
�!C��y8{����J����n��J�����?������}��7������]w�%'�t�tt���;�+��	�>p�+ �N�:�N��hY`���)oL�S�V�����uBC���
P'2���h�^�e�;L��r2{��y��_�������^{M6�d�5����C��D���g����S��9��#�]w]p��Y#�@1o&79���9���9�=��~���q�������Z����O<Q�����-�5\[m��L�>]��/�y�
�3f����:����m�M��-J|�xp!��=m�N�E�� �\���+e������O�.[l���5P'4e�X��u"3����F��[Vi����d��#��G
�������g�$66t�P���k04|7wg������?/�=��������.>��(_~��l����{�w��y��RXX(s��	���<h��)2w�\�5Z�y(o��|��W��[��:�u�]W�����c�
�>1N�:�>����C�M�o��>L>����3q�D����#�K�m�o&mQ�3�[��x���h�u�-J|��{�J��O�}�W���~�5��^��P'"�<��@��Y��4(�^�%����_�g��')M�t0���v��������2ww���Jee�,X� �������JQQQ0N����#14h�|�����<��s��~���9H��/3n:����\~���-�c�>1Ms���1���1M�������
7�0'����s���a�N��@��@ �u"��#����7k�������n_,��Wj�����I,dF�:�WVE@���-�4L���>���c�9���5���������2w�L�<��fF�-W^y�t��=������a�BI4[����r����>����X���_=x�H��a�4w�\q�2f���_���](�Y+��~{��������Z.����~:����i�
��"�@��"ME#�@S�DS��M���2����c/3c�~r�q��69b��ND,al�P'r��)����-q4L��";{���2m���n������(I�|}���������
6� �O�3M�?�|l�`1w����+��������/_�\>��S1�4�[g�u��l����kq�_�a�&�C#�� �N�:�N��hY���9��
�fiq'���k������l��Nd��U�(@�p�*
7?f+�a�<����.D< ����Lx1na��w�W.������a@���Eb@ ������:��n��a���l�4L�'��� ���D�@@�uBy�	/����Rf�������d�~�v���:�%���@����ee�	P/�2J������h�(O0�!�A��,��r���^F�{�J^������}���CJ�X�uBK&���	P'2g��h�^�e�������0Q�`�C��"Y��	�	&��
<�v�Lx���c��Er�]�X�uBK&���	P'2g��h�^�e�������0Q�`�C��"Y��	�	&��
|0�^��`�=�����O��n�Z�Z2IdN�:�9[VF@���-�4L����\��������(�N(O0�eT��%
r���E�d����X�uBK&���	P'2g��h�^�e�������0Q�`�C��"Y��	�	&����H��������r��5��5P'4d���u"�����&��[6i���1[�
�	&<<p!��%P.@�P�`����������������2�v�B;�p@���Eb@ ������:��n��a���l�4L�'��� ���D�@@�uBy�	/�7>�T^�w�=�	{u�Cv,�c
�	
Y$2+@���/�#�I�z��M&n~�V.@�Dy�	\�x@d	�P'�'��2.���5r�K��<�mS(�*�c
�	
Y$2+@���/�#�I�z��M&n~�V.@�Dy�	\�x@d	�P'�'��2.����r��U�<���/W����5P'4d���u"�����&��[6i���1[�
�	&<<p!��%P.@�P�`������
r���<E�d����X�uBC���
P'2���h�^�e�������0Q�`�C��"Y��	�	&����H��������r��-���~@��z�?��Nd��3 �E�z��I&n~�V.@�Dy�	\�x@d	�P'�'���"p������+��~T��0����~@��z�?��Nd��3 �E�z��I&n~�V.@�Dy�	\�x@d	�P'�'���"p��K������F��E�Y�G��:��2/@���1g@@���-�4L����\��������(�N(O0�eE���k������m](c)���P'��A��@���7�h�^�e�������0Q�`�C��"Y��	�	&��|2�^.�G�=�F������a�Q?�ND=����P'2o��"@�p�$
7?f+�a�<����.D< ����LxYX\� ���H9��{���<�ND9{���P'���Y� @�p�"
7?f+�a�<����.D< ����LxY��_���U�|7��C�)���(P'��=��@v��q�,h�^�e�������0Q�`�C��"Y��	�	&��	\��%2}�r{��G��O7-��(P'��=��@v��q�,h�^�e�������0Q�`�C��"Y��	�	&��	���2yaJ�=�Q?/�#v�b�Q>�ND9{���P'���Y� @�p�"
7?f+�a�<����.D< ����LxYx��Z���e�|C�,��-��(P'��=��@v��q�,h�^�e�������0Q�`�C��"Y��	�	&��	L��B.�w�=�}���Sz�q��Q�{G ;���8s4P/��H������h�(O0�!�A��,��r���^��_2r����M��g�8��DT3����u"{��	��P/�2H������h�(O0�!�A��,��r���^V~um�T.m������~�|;��u"��c�dO�:�=k��@��n�a���l�4L�'��� ���D�@@�uBy�	/����D��n������/��?)L#��:���q�&@��5'B ����0q�c�r&�Lxx�B�"K �\�:�<���U����L�}���s��%r��.v��DT3����u"{��	��P/�2H������h�(O0�!�A��,��r���^V^�Z+�<���s���o�f�Q=�ND5s���	P'�g������-�4L����\��������(�N(O0�eU��oV��^l��~�<���r;��u"��c�dO�:�=k��@��n�a���l�4L�'��� ���D�@@�uBy�	/�u��/9~a�9'^�3e�u"�Yc�dW�:�]o��@��n��a���l�4L�'��� ���D�@@�uBy�	/��]_!�4��������wg;��u"�Yc�dW�:�]o��@��n��a���l�4L�'��� ���D�@@�uBy�	/�W<�D��l�����s�*�nQ�F�7u"�ic�dU�:�UnN�@��n��a���l�4L�'��� ���D�@@�uBy�	/����L�z���w���r�n�v��D�����u"���
�(P/��G������h�(O0�!�A��,��r���^�^��Vn|r�=���Gt��(P'��5��@v����lDY�z��=&n~�V.@�Dy�	\�x@d	�P'�'���.0����;���]�'7�Yn�Q<�ND1k���
P'��������-{4L����\��������(�N(O0��D`���)��xa��q����e��"�}�D��9#Q�^�e�������0Q�`�C��"Y��	�	&���qc�|_�`�}�����:��8j���e��"�}�D��9#Q�^�e�������0Q�`�C��"Y��	�	&�����%�������Q*�mUl�Q;�ND-c���P'�o�����-s4L����\��������(�N(O0��D��.�'����������=J�8j���e��"�}�D��9#Q�^�e�������0Q�`�C��"Y��	�	&�����:���������Gu���P'��1��@���7��DU�z��9&n~�V.@�Dy�	\�x@d	�P'�'��r"0g�
������{u��[F��q��Q��E �����sF�*@�p�
7?f+�a�<����.D< ����Lx91na��'��)E)/Ef@��L��(9�N���#9��[�h���1[�
�	&<<p!��%P.@�P�`������T�6�����������8J��(e��"��Dn�9+Q�^�e�������0Q�`�C��"Y��	�	&��	\5q����r{�3*�=�)��(P'��-��@n��q��DQ�z��5&n~�V.@�Dy�	\�x@d	�P'�'��r&����d��Z{�w,���*��(P'��-��@n��q��DQ�z��5&n~�V.@�Dy�	\�x@d	�P'�'��r&���ur�cK���/����f�Q:�ND)[���P'r��Y����-k4L����\��������(�N(O0��L`�+��[+�������1�v��D���^��u"7���(
P/��F������h�(O0�!�A��,��r���^NF�[�r�	c{JQA�K�P'"�&6�@N�9���DJ�z��.&n~�V.@�Dy�	\�x@d	�P'�'��r*p�m����+���ew�I��v��DT2�>��u"w����	P/�2F������h�(O0�!�A��,��r���^N��x��=������Ke����8*���d�}"�;�D��93Q�^�e�������0Q�`�C��"Y��	�	&��
<<�Z~���a���W���qT�Q��D w����sf�&@�p�
7?f+�a�<����.D< ����Lx9x��z��G�����@.����r@��J��'��N���3#5��[�h���1[�
�	&<<p!��%P.@�P�`����7�V���+�����]���qT�Q��D w����sf�&@�p�
7?f+�a�<����.D< ����Lx91na��>-)+���Z����g��!�{�D�s�����-S4L����\��������(�N(O0��\��wT���V�}\v|7�r�;��u"
Yb��V�:�[��@��n��a���l�4L�'��� ���D�@@�uBy�	/��L��7���}��o9`�;��u"
Yb��V�:�[��@��n��a���l�4L�'��� ���D�@@�uBy�	/���U#�Zm���vEr��]�8
��(d�="�[�Dn�9;Q�^�e�������0Q�`�C��"Y��	�	&����e�\�P���O6�,W�����p@��B��#��N����#%��[�h���1[�
�	&<<p!��%P.@�P�`������
r�
v�����_�e�Q8�ND!K���
P'r�������-[4L����\��������(�N(O0��B`���)����r)����Z���0g��!�D8��.����-K4L����\��������(�N(O0��B`�]�2��+�^�8�L������~@�{����N�>���P/�2E������h�(O0�!�A��,��r���^(�{�J^������{w��Zb�a?�N�=C���P'r�v�@T�n��a���l�4L�'��� ���D�@@�uBy�	/O�S#�x���e�m�����q��a��C ������ ��[�h���1[�
�	&<<p!��%P.@�P�`�������OT��l�~����v��D�3����u"�9`DE�z��)&n~�V.@�Dy�	\�x@d	�P'�'��B!�CU��~]��KQA'�0v-;�u"�b�^�:����"@�p�
7?f+�a�<����.D< ����Lx�9~��-_e�s��r�U�g�a>�N�9;�
�pP'��v�@�nY�a���l�4L�'��� ���D�@@�uBy�	/4��Rf|�������d�M
�8���0g��!�D8��.����-K4L����\��������(�N(O0��F��g�������9n�.r�N%v��D�����u"y`DA�z��%&n~�V.@�Dy�	\�x@d	�P'�'��B#��{5r�?��~�
*�1��q��a�{C ��p��] ��[�h���1[�
�	&<<p!��%P.@�P�`����9�r��*��������{�q��a�{C ��p��] ��[�h���1[�
�	&<<p!��%P.@�P�`��@����5)��xa��qX���f�}!�Dxr�N���-C4L����\��������(�N(O0��J��]$�jW�=�xV���#���z@�kf���N�'���P/�2D������h�(O0�!�A��,��r���^�.�o�|6o�����*�!
�8����f�}!�Dxr�N���-C4L����\��������(�N(O0��J�����??��{:f�.r��%v��DX3���u"<�`'�]�z��!&n~�V.@�Dy�	\�x@d	�P'�'��B%������j��]�*�sQf�a=�N�53���P'��v�@��n�a���l�4L�'��� ���D�@@�uBy�	/T���\.�o��S�������a�a=�N�53���P'��v�@��n�a���l�4L�'��� ���D�@@�uBy�	/TU5����-J���{���8�N�1+�	�p	P'��v�@��n��a���l�4L�'��� ���D�@@�uBy�	/t'_S!K�5�}]wFYo�|;�u"�YaO�K�:�|��,@�p�
7?f+�a�<����.D< ����Lx��d�����v_�Q&;mVh�a<�N�1+�	�p	P'��v�@��n��a���l�4L�'��� ���D�@@�uBy�	/tw��L��Rk�u��9r�.v��D����u"\�`7�Y�z��&n~�V.@�Dy�	\�x@d	�P'�'��B'����r�s���v��P~3����x@�cV���N�+��0P/��C������h�(O0�!�A��,��r���^�>�j�\t�b�������S{�q�a�
{B \��p��� f��[vh���1[�
�	&<<p!��%P.@�P�`��@]��KF�_�����L�m@�[F���N�/'���
P/�2C������h�(O0�!�A��,��r���^(N��B*����>��l������:����'@�_N�a�^�e�������0Q�`�C��"Y��	�	&�P
\���xV��&?��7����yQb�������
!:�D�R�����-54L����\��������(�N(O0��R�����3�����K���R;�u"la?�O�:���#�*@�p�
7?f+�a�<����.D< ����Lx�xyj����2��!���Ft���P'����@����	;B �����0q�c�r&�Lxx�B�"K �\�:�<��J��]!����m�����3��8l���e�� >�D�r�����-34L����\��������(�N(O0��R����%#�/L���{���4�N�)��p
P'��v�@�nY�a���l�4L�'��� ���D�@@�uBy�	/���P!?,n�����.�����t@�S6���N�3/�
�0
P/��B������h�(O0�!�A��,��r���^h�=�D>���V��>���|���0T���J�A ���P��M!J��[Zh���1[�
�	&<<p!��%P.@�P�`���}�,�Io���:�X������t@�S6���N�3/�
�0
P/��B������h�(O0�!�A��,��r���^h^�V+7LZf������#��q��a�{A ���p��]!F��[Vh���1[�
�	&<<p!��%P.@�P�`����oW���\l���G��|V����:�l��)@�g^�a�^�e�������0Q�`�C��"Y��	�	&�P��0e/��2��:�L��+@�on�a�^�e�������0Q�`�C��"Y��	�	&�P�uS�|W�`�x�����:��8,���d�} ^�Dxs�����-#4L����\��������(�N(O0��Z�/�,�)_,�{<��R�cP����:�L��+@�on�a�^�e�������0Q�`�C��"Y��	�	&�P���2y��Z���v*��,���P'��	��@x���
;C l����0q�c�r&�Lxx�B�"K �\�:�<��j���������=n�I����nv��DX2�>�u"��ag�M�z��&n~�V.@�Dy�	\�x@d	�P'�'��B-0������=���'��]n�a9�N�%���
P'��v�@��n�a���l�4L�'��� ���D�@@�uBy�	/�#�-L����=�� ����9O@ ������
"��[*h���1[�
�	&<<p!��%P.@�P�`���9�V��?4�}�;��l�~g;�u"Y`�[�:���;�$@�p�
7?f+�a�<����:�*�@IDAT.D< ����Lx���.�w?[n�y�����b;�u"Y`�[�:���;�$@�p�
7?f+�a�<����.D< ����Lx�x��j�8���s�!�2j�R;�u"Y`�[�:���;�$@�p�
7?f+�a�<����.D< ����Lx�x��z���Uv�[m\ �����p@�C���N�;?��0	P/��A������h�(O0�!�A��,��r���^��Z�R������G�<���r;�u"Y`�[�:���;�$@�p�
7?f+�a�<����.D< ����Lx�1na�>�>-)+���Z.��\�sn�!@��F��%a�^�e�������0Q�`�C��"Y��	�	&�H�w{��_�������t��\P'r���@����;D ,��L�0q�c�r&�Lxx�B�"K �\�:�<��	��=Q%o�����W���~��q�����G ������"��[&h���1[�
�	&<<p!��%P.@�P�`����#oT�C���{���YrJc�$,?���d�} ^�Dxs�����-#4L����\��������(�N(O0�EB���2��*���7,�+��f��>�N�:���P'��#v�@X�n��a���l�4L�'��� ���D�@@�uBy�	/�V���7U���w�{~�����:��p~�/@���!a�^�e�������0Q�`�C��"Y��	�	&����0e�w�W.�������u"W����P'��+v�@��n�a���l�4L�'��� ���D�@@�uBy�	/2���R�|�������d�~�v���D.�97��ND#O��0P/��@������h�(O0�!�A��,��r���^d�}�J&Ro�{�>]��!%v���D.�97��ND#O��0P/��@������h�(O0�!�A��,��r���^d�F&�Rm����"9���v���D.�97��ND#O��0P/��@������h�(O0�!�A��,��r���^d�|Y/y���w`����_v��\P'r�����u"yb��A�z��&n~�V.@�Dy�	\�x@d	�P'�'��"#�`q��yC��oQA'�0v-;��u"����hP'��'v�@�nY�a���l�4L�'��� ���D�@@�uBy�	/R#�/������o=�\zv���\P'r%�y��u":�b��Z�z��&n~�V.@�Dy�	\�x@d	�P'�'��"%���+e�7+��/<�L�/��\P'r%�y��u":�b��Z�z��&n~�V.@�Dy�	\�x@d	�P'�'��"%p��U���z����"��Xb��:�N�J��"�Dtr�N����-4L����\��������(�N(O0�EJ��wk������w��PFTf��:�N�J��"�Dtr�N����-4L����\��������(�N(O0�EJ����������7Y/_�:�����:�+y��@t���;E ����0q�c�r&�Lxx�B�"K �\�:�<��)��K��k+���
:���k�q������DG�:�\�Sr-@�p�
7?f+�a�<����.D< ����Lx�9~��-_e�}��r��=��sq@���:�D Z��h���"�K���>
7?f+�a�<����.D< ����Lx���=����V�}���2�a@����:�u��@�����E ��7}&n~�V.@�Dy�	\�x@d	�P'�'��"'p��K����������Zb��8�N�B�s"-�D���n����M�������0Q�`�C��"Y��	�	&��	<�~���b����[�9���q.��P��DK�:�|�[r)@�p��a�������e���2v�X)**juo����������3�W�^���;�f�m&yyk���)S����Se��E2x�`1��=z�z���������
�5p���\������X�B^y��1c��Z�J�"�n��c2vdk�H��4L�	�>p!����N��}�+���z��U����/�7j����~8C����,����I(dX�z�L���/4���������44���[��C=$��r�TU��� �n��v����K���������~��g��w�w��Q���n\p�\u�U��3����[�s����������#��/��"����2y�����I���������i��&�� ��B$!�ohM�:���#����
2�����O��g�8��D��9��ND/g��\	P/��i����b���c��w�{i�a���/����|�o��r�!��w�}'�>�h��������������c�����^{-���(����^x�65n��&9��3���\z��r�e�C������2y���5�y���~���A�f����4�
��%<���Np�JbbG�����7
�tB��\��7�����x������dY�*{���!����q����|DO�:���cr%@�p��a�����uuu����ELs"����ICC�l���A�c��A�W^%#/��R�1k�;B�Wz%~y�9��#���w�)'�|rp\SS#Gu�<��Sb�����o�K�.�{�k�6�p����O��o���M2n�8�������~�m�i���c���g�-7�pC�������k���s���=��Cf��4|��0����/1�-�i��E�� o.D���G�-���(��+�������������2�q`�g��:�mq��@����;F W�7y&n~9�m����c�����7�CK
�L�=��3��i2�1"e�i��&��v��;O�sG_���.���o�)����?�<e��y��_�~�kw�u��t�I����$��1w����zv�����s������t���Qb�G�������1<��{���k���6�t���#�&��&m��c�X��'��h�u��P|�,
���2y��Z{��~^"G���f_��u"���
��
P'"�8��@�n�4L��r6��+���/�88����.{���m���0I����n�D�!��.�������VJJJ����/���o����
&�k��W}%��0��������g�M�xp|����%�\/_�<h��5�Z�'q�`��?�+��u��w�tt���;�a�N��@��@ �u"��#�}���%w46M?C�(��+K���:�urN�@���KF g�7z&n~9�m&���n��V�k���O�R���C�I�&����*���z�}WVV��'������g��������l�����k����<�|�S�N����&��N�D����:(x)q����d��1�k�RTT�<%8�~����?@o�L����-��h����@ �B�?H'@�H'��d_`��r�����7��/W�����}@���8�C z�����#�+���<
7���6;O|m��D��I���;�0y������<�$?�C��(��$��&����e�m�i6���a�&����<W���4����u�Y�q�?��7w����;N��'��|mWK?���_��ys'��/����%bli��^�a��
�!�@�"�#�@K���Tx
��
T������(e/��2���:�Mm��@4����F �7u&n~����a���[�;1_�u��7��o��W���L��4M�q>|x�Y���
6���<�@�SO=5x��������^;���}����|�����[������>��y��'�\s����_f���l�ya���r�����!C��������v������H��5^G��"		~#�@k���dx��
���
�\�`7q��=�o���#2�b��Y��4DX�:���u�,@�p�a�����&�m�����2_{u�����o������g��g�L�8Q�8����,���{7�7a�9������W����J<���G�
���s����6�(x����
������sGJK�O�5���4h�L�:�C�+//O,���4L������"�N?�#�&�D���Y���%2m�r{��/��?)��lP'������u"�yc��B�z��N���/4��5L_�5j�(���;Z�w����G���k������<���r��g/�f���+�Wr�w�}���<��O>	�����Q_���o_�?~�����G)�<��}KG����Q�	Z80
�[o���wx	@@�,���r�p^w��*eX��A@p0����
��f����5L�:�(y�����g�����^}��r�����i�d���^3[<xp��J��]]tQ�z��#���y�������1�-6lX���)S���-��"g�qF�:M'����A�����'�|���k����4L���{ � �DW�������z���T��s� � �1&sc�G�t
���?_L#d��w�7�x������{���O�z��#?����.s7�iX4�I�������R.����a�M�<��A���n�&1w�L�4I=����555R\\�t�$�M<����k��^�+����[ p�+ �N�:�N������_������|��yr����
_;���:��tb @��A�	O�7H�0q���t
��s���1�i�,�UW�+���y����n*


��������H�'�l���?^�������0
�����>&�Wb4�}�]����%�yL<>y�7�|#���~��]w�%'�tR����n�c&��x��o�	P'�	�>��k||���SN>���)�l
����<DW�:���s�-@�p�a�����&-5�7�hr��=���'�:u
�>��s�����>1k$(���&�=��#'�pB0�����?<8N4_�A�?uuu�]+UUUr��'��w��e��k�������Kr�%1/��3c�0`@�VG��X�-�i��E�� o.D���G�-���(�r#p���pI�=�_O�.�zw��lP'�%�y��u"��c�d[�z�&N���/4��5L�F����eee�������C�4*���*����Xn��9���l\_~�ep��y�����;��S
e��9�Wt��5+h���;�~��y��o,_}��l��b��k�u����j9��c��O�zS�N�7c���D���o��O~��i�L�8�|<����s����I[����B$��'z�"@�h��A 7W<�D��l�����s�*�nQ�f�7u"k����
P'"�:6�@��n�4L��B3�-
��?�<��,sw��8p�TVV����{�!�>������]���4h�|�����<��s��~���9H��/3n:����\~���-�c�>1Ms���1_���kW1M�������
7�0'����s���a�N��@��@ �u"��#�;����L�~��n`���r�n�v���D��9��ND7w��lP/��i����fv�]��G��f�n��)2y����G�-W^y�t��=������a�BI4[����r����>����X���_=x�H��a�4w�\q�2f���_���](�Y+��~{��������Z.����~:����i�
��"�@��"ME#�@S�DS��G���k�����
�0�@~D7;��u"[����
P'��;v�@��n�4L��";{���2m���n������(I�|}���������
6� �O�3M�?�|l�`1w����+��������[<^�|�|���b�i���:�����;���5��0i*��
p!�T�14�N4a�@xf~�B~w�b�������3��8[��lIs�+@��n��9��^���0q�c�r&�Lxx�B�"K �\�:�<��i��"�^�0%��F�K��y)�ez@���0�#}�D�sHdK�z�&M������h�(O0�!�A��,��r���^����B��lH�c���2b���w���35�NdJ�u�#@���K"A ��7a&n~�V.@�Dy�	\�x@d	�P'�'��"/�����3���v
��]��f�g�qB�h��@ I�:���!�Q�z�F��o�0IK��,@�$��'v�&��H���q�N�9���7>��[�^&���Z���};���;N�(l�3.oP'\���@<���3Q"�C�z��H������h�(O0�!�A��,��r����
���L^��F�z�V*�R��+9����������V��/;S'�	Y��	�)&@�	P/�(i���1[�
�	&<<p!��%P.@�P�`�S'������[5����'�
�N����%R����������	��,��Z��[ji���1[�
�	&<<p!��%P.@�P�`�S+�������2�����X�%OR$)�.E�Z�\�7���x��
 �@[�m�j�s4LZv�U&�! �@:.D�	�>P'�@ ���������Of��`x]qa'�k�"9t��Q������&c��N�.��@���&�0q�c�r&�Lxx�B�"K �\�:�<����?���'�����������������k�\����d
�@�%�DK*��-	P/ZRi�k4L�n�'c(@�$�I'd�)��H;��81�N�0���Z`��y����^��NV��m]����2|h�l�N���P'T��^�^Y�XP/��L������h�(O0�!�A��,��r���^lW7�������IM��V���@��X��W��g�����(@��O�*@�h�T���a���"�0��	p!�N��@�:���j�W�3Sj���je���V���n������Y��	u�U6�@���) �@[�m�j�s4LZv�U&�! �@:.D�	�>P'�@ >/|X+��:YP�z�d��yrX�Wu�1���P', ��u�^F�f��f$�z��I���p�h��-���@��i�3��u"n'^D���N�x�F�|��CN������e��K���l�o�=| �@�\O���� �����v�D��X|4~4L��s"F��\��W��#?�D�rN�$>�U/��U+��.O���w��N2h�������.;m��}^@��� �@[�m�j�s4LZv�U&�! �@:.D�	�>P'�@������oT�����8)�_%{mW"��Y��j���@ Y���d
�@`M��5����Iz#>c&1N>�#�F.D�����u"��'t���b�<�f��6���;��a�
���]d����o0B��
p=��8��^��,e
��
�0I�`���in�+ �*@�H�`�"K���k�����n��VIvX #v�"����gx�!��D<�L���^�)�0q�c�r&�Lxx�B�"K �\�:�<�����@u�*y��y���RS���$�oX �w.�����T���Q�{G ��7o&n~�V.@�Dy�	\�x@d	�P'�'��� �����������e���VW��v��s���yQ���
�)�������^���0q�c�r&�Lxx�B�"K �\�:�<������:���Zy��Z��������<O~�S���]q���
�%�\'tEF4 �[�z�&J������h�(O0�!�A��,��r���Z��Y/��Y#3�Z���w�����;KIa�V?� }���D��"����M�������0Q�`�C��"Y��	�	&<<��N|����������[=SIQ'�w�"9x���%����DW`Mu"�Q�s����M�������0Q�`�C��"Y��	�	&<<��N|�p�<�F��1���3vn|n���5> ����F��U(�@ �m��-#�@�n�4L����\��������(�N(O0�!�A�=u���y����^�Z'�W�j��C�,��CKd�>�[�o �@t�S'�;E�LP/�Ti���1[�
�	&<<p!��%P.@�P�`�C��@G����U�������:�n<n�g����.��4NZ3�u� ��:���#��^���0q�c�r&�Lxx�B�"K �\�:�<�����:Q��h��?��������
��f������D�(l�3���p�����!�@&�n�4L����\��������(�N(O0�!�A�W�xij�<�V�|����I���r��b�m�b;g	����:���r������������0Q�`�C��"Y��	�	&<<��o^����j�������W�<9x�b�{p��m]�:�a�]'��@��7S&n~�V.@�Dy�	\�x@d	�P'�'��� ��:���zy��Z�6��{�Z�)��I�R,
)�.E�Z�/#�@�2U'r�G��7S&n~�V.@�Dy�	\�x@d	�P'�'��� ��:1g�
y��y���Vw[\�I�\$��T"ku�k�s����t��MT�2!@�pS�a���l�4L�'��� ���D�@@�uBy�	��7�����z���5�z�m�d��Y�<���M��@��D�"�L �)���,
7?f+�a�<����.D< ����Lxx�v�X\� ����?����U�F��O
d��]d�ux�I�H��@��]'��A�P/�Pi���1[�
�	&<<p!��%P.@�P�`�C��@��Du�*ynJ�<�~�,Y��j$[m��8Z,�6*l�3����U��lT����^���0q�c�r&�Lxx�B�"K �\�:�<�����0���?�
�:�����I�u����;N~��ig	�%�:��
�a������������0Q�`�C��"Y��	�	&<<��NL�^'��U#��[�jd���'�5>�d�m�[�o ��_�0�	�����^���0q�c�r&�Lxx�B�"K �\�:�<�����0��g���o������ayY��c���]���1�@a��b	����
�������0Q�`�C��"Y��	�	&<<��N��v�<2�Z�|�z�������C���.RV���K �@S�0���{e���^���0q�c�r&�Lxx�B�"K �\�:�<�����(���V��G����?�o5����d�m��������x�	? �O 
u�_���.�=&n~�V.@�Dy�	\�x@d	�P'�'��� �:�pi�Lz�F^��N���j5�a[����_�g~���
h�@��D���� �	���*
7?f+�a�<����.D< ����Lxx�b���Y%��_#��W+5u�7Nvo���g����NR����(������]���H/�:�>*>���^���0q�c�r&�Lxx�B�"K �\�:�<�����(���"/|X#O�[+�4tH�<<�{i��������M���,��w�k�:�$Q�*@DH�z��,&n~�V.@�Dy�	\�x@d	�P'�'��� ��N�6�V&N��ou�q������f�T��o�X1���M���
��,k����O>-u":����
P/�rG������h�(O0�!�A��,��r�������g��coV���Wz���E��������W
��fKp'������+e��~���:fk��@��n�a���l�4L�'��� ���D�@@�uBy�	Z���������W,k������q�'^[�J�4�gM��@��%z46QV7X�T���b�X����`A��|5X�gz6���-��Nd���!��[�i���1[�
�	&<<p!��%P.@�P�`�C��ub5�w���)�
���4YVM�\��o�!����%JV�h�tf��W7X~�j���<).���6���5
P'���� �$@�H���!
��1%>4L��k"E��\�tT�y�G�:�\)�N�_n���+Iw�,nl�T.[��Xi�������Ja�Ds�_
f�,��s�J��a����.����@K���Tx
Z�^�����h����O�P��I�N��S��v��qb(@��a�	�v
P'�	��������z�TT���bB���HY�`��������%��j�v�D�������������������0Q�`�C��"Y��	�	&<<P'< zZ��%��\I<s�|=��;W���3��������Ms�G�3V��T)o�m�,8.�����V�;{b��	P'rF������-e4L����\���w'��T���03�(��(F	`4	�����"�A�������#��F��<�����pC�]\.("FEAY�a�����T�����wn�o�~�y����t��������9&�7���@��H�� P��8Qx����GPD$Wb��j���Kej2��N�L
v���O��\��)UbeY5X	�����/��,m��f�,Mqbi���"���v�"a�����H����G�" *�@��D�
�z:':@\�E\^
���+1�JLb��$�Mr�����uK ���Vy��<��T���=V��J�^���
��������x���$L��9�p	��X�t �B�DE(\@�(��U�@�D�Q'W�t��tE�\�\�:6��+[���DO�fX�H�,Kw�������S���Q)&A@�h��&��]���I�
�z:p!��". N���G�q��	-����������YrO��p����
f8�n�8��n�B`��v�,a�����H����G�" *�@��D�
�z:':@T����I�c��,�*�\�_W��WI�H������{����-,N������=���������$L&��U���\�,��A&J@����VY'����I��cemr�J���J�\�6�ru�oe�C�m�Y�0`yB���,���8�8q;��+�@��E�F�0i����$L
o`�#����A�pq��V=� *b$�]s[O�jB�H�T����1�J������^Z�IN�T��,�1���I��D��t�5��������
�f�7������xWqb��& ^L�X�&�M��I�0���VWp!�07G�$qb�Z[]	,L@�X����G`\����W"q�������f���������0��%]�����������t�o�0nd�	�0���Wu�p!2O(��`qb�_�	�S@��'��&B��[�������T�����uyH��xC��e�/���N�l�+����������$K$\����SI�H����u'j	�/�	��]�dn['\@�d��T��<\���.&\@���?�'0qbHv!0@`�!�b��zB�Q
	6���{U��%��1-������[N%arO�&�2���z��K���M������0)��U�@.D:@T�����X�t  Nt��s\wc/U=V�Nf��z��5y}/]w����]�:��o��+sT�����R'^6_�A5�K��e�0c�U=]��K��IJS��m��w����p]���$L��9�p	��X�t �B�DE(\@�(��U�@�D�� ���5��I�H��I����)�cN���T���g*�R']b���oY�C��������R�|��y8������=^"�	���I����0c�-r��B�����h�,a�����H����G�" *�@��D�
�z:':@T�%(���������J$[�,k�.��M�\W�lY����E�%����7��t���2�L�m�H��$K��%'Z"������vJKZ�uE���0i����$L
o`�#����A�pq��V=� *�@�u�����_Z}���n�S5lX�r��l���K�t�z�LV��f,z��=]n[��K�� ��b�z��0Y,�N�������X_"�+f�' NL^��1��'�W��&O�M���.�U�\n��2�I��.ijn������������i5�X��7�s�H�L�'o<k�&^�g��=k	�n=�V���Ia
�:n"��"	& N���C�v'nTE(L`�q�?�=X��-y�u%]b8�ko�����e����h�ty$S��mi�����Z,�t��7[1�t��/�z�M��R�GtIUg��bIa,�d$L�����0���VSp!�P9��qbr�ZM	,T@�X���L�@	q��z������45���9]�������"�2�#&�4���e!I��o�Vl���M6L��1��G�~��E}����b�{���0��r�F"�Bd$����X	�c�\N��H����{Sc% NL5W$T�w�u�tY��.�p�$K$c�������^��y]�>�U���dWl�A�d�
��(�y$U����Tr%�O�[�I^I���2�����G+b������1��/����I;?G. aRx��\�t�����7���@@��Q
'�k`I�����^�)��������t���%Y����<TY��%z��'n����r�	��l%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8���N�D���2��e��K��%������2���������F�nK�D�e�LN��}>���:z���H�T���%3}h�����fi��x��=$L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Q^K���iMZ�v����<�K���V����j�2[`��bh��$L�\���{��vle�	���K<�lE<�0'b�����X9~�a�����F�d}��;q&��*L`�\��7�L��81qM���[@�Xo2�8qb��|�*|]��r���HY�X�*k������Ts�D�%��x�T�%��cn\�|�����1���L	l�014��9�s�l�+�T�J�l��+y}$Z�}����K�?��AZ�9a��v�&��]���I�
�z:p!��". N���G�q�DE(\@�(���p���K�X��)���J�T	��.z���I�*��/������dL����3����dL�|Y�"��K�TI�H����6]�,��J���"!��x��/9Y�Y^?l/�	��]�dn['\@�d��T��<\���.&\@���?�'0qbHv!0�����X�jX���K~�f,���{��DL$enK���1k��z�T��qy�*a��t��b��R��I�F���K�������y���v�a��iR,����$`6�1�/3�vb^J�LLS��B$L���%���d���X��8�5��,qb��[m	,D@�X��c&U �|�{�T=a�&W"s�T��U����L�_�S=�f��L~������x�,�xY=_b�	J�H�Lj�P�y	H����N&Z���n~�'0/qb^Lv"0���D7�����81/&;�]"qR'U��1k��7FReM�>�s����b��=^b[$[�_�|)yN�9��X���+7L����n�vX�B%LK�������X6��&����,*�7#0���X6��&�����r{3c) N�e�9i�f&^������J�������E����8$^���;N�����0�s��* a������X
��2����	,��8������X
�c�lN���
�����,i�H�\C��M���s���!�^�����]��$[����N�����=^b���k�0��d�K`	H�,�Fp
���/.K����%  N,�Fp
���8����X��h�@`L�/f&^���Z�y[�a�r/�R,��25��mC���^f&^6�s�|��;�������d���*	�����rl'@�\q���U3]	�]I*�@��D�m�f�X�x�X��K1v��)���m�u��<	�E��f�& a2n-�|	,��b_�,~
�#m�����'P��8Q~�!���D[A����][K���st�&�7���@��H�� P��8Qx����A�pq��V=
��0%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Qx����v�&��]���I�
�z:p!��". N���G�q�DE(\@�(��U�@��E;L	�v~�.\@���V=��Q
'
o`�#���8��". N���G�C����I;?G. aRx��\�t�����7���@@��Q
'
o`�#���x�S������0)��U�@.D:@T�����X�t  Nt�����7���P@�h�)a�����H����G�" *�@��D�
�z:':@T�����X�t( ^���0i����$L
o`�#����A�pq��V=� *�@��D�
�z:/�aJ���st�&�7���@��H�� P��8Qx����A�pq��V=
��0%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Qx����v�&��]���I�
�z:p!��". N���G�q�DE(\@�(��U�@��E;L	�v~�.\@���V=��Q
'
o`�#���8��". N���G�C����I;?G. aRx��\�t�����7���@@��Q
'
o`�#���x�S������0)��U�@.D:@T�����X�t  Nt�����7���P@�h�)a�����H����G�" *�@��D�
�z:':@T�����X�t( ^���0i����$L
o`�#����A�pq��V=� *�@��D�
�z:/�aJ���st�&�7���@��H�� P��8Qx����A�pq��V=
��0%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Qx����v�&��]���I�
�z:p!��". N���G�q�DE(\@�(��U�@��E;L	�v~�.\@���V=��Q
'
o`�#���8��". N���G�C����I;?G. aRx��\�t�����7���@@��Q
'
o`�#���x�S������0)��U�@.D:@T�����X�t  Nt�����7���P@�h�)a�����H����G�" *�@��D�
�z:':@T�����X�t( ^���0i����$L
o`�#����A�pq��V=� *�@��D�
�z:/�aJ���st�&�7���@��H�� P��8Qx����A�pq��V=
��0%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Qx����v�&��]���I�
�z:p!��". N���G�q�DE(\@�(��U�@��E;L	�v~�.\@���V=��Q
'
o`�#���8��". N���G�C����I;?G. aRx��\�t�����7���@@��Q
'
o`�#���x�S������0)��U�@.D:@T�����X�t  Nt�����7���P@�h�)a�����H����G�" *�@��D�
�z:':@T�����X�t( ^���0i����$L
o`�#����A�pq��V=� *�@��D�
�z:/�aJ���st�&�7���@��H�� P��8Qx����A�pq��V=
��0%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Qx����v��TM�6dIDAT&��]���I�
�z:p!��". N���G�q�DE(\@�(��U�@��E;L	�v~�.\@���V=��Q
'
o`�#���8��". N���G�C����I;?G. aRx��\�t�����7���@@��Q
'
o`�#���x�S������0)��U�@.D:@T�����X�t  Nt�����7���P@�h�)a�����H����G�" *�@��D�
�z:':@T�����X�t( ^���0i����$L
o`�#����A�pq��V=� *�@��D�
�z:/�aJ���st�&�7���@��H�� P��8Qx����A�pq��V=
��0%L��9�p	��X�t �B�DE(\@�(��U�@�D�� P��8Qx����v�&��]���I�
�z:p!��". N���G�q�DE(\@�(��U�@��E;L	�v~�.\@���V=��Q
'
o`�#���8��". N���G�C����I;?G. aRx��\�t�����7���@@��Q
'
o`�#���x�S������0)��U�@.D:@T�����X�t  Nt�����7���P@�h�)a�����H����G�" *�@��D�
�z:':@T�����X�t( ^���0i����$L
o`�#����A�pq��V=� *�@��D�
�z:/�aJ���s�8��S�����������n��Hvl�����P����	L����hf�$�J@�h��`! NLD3�$�V�D+>�(��]sK���s������~������/�:��|�#����~�+$L�+e?�+�Bdr�^�	�W@�����L��81�m���+ N�W�~���$L��9z���rKz�c�N:���L��k���;��}�k��s�����}�Kx���T�dAl"0Q.D&��U������9��D	���*K`A����D`"��v�.a����#8��c������,�8�����?�z~�
7�g<���NH[l�E���K���n��g+a��d 0q.D&��U��z��M�' NL\��0��'���&V@�h��&��=b�?�����ON;��s:������\������Zw��G��=�y�������|��C`�\�Lv��=����Q���'&�����|���(���/��H���s�n����r��������W��U����}h�������s����~u��a+$L�	�N��'�	�N��8�o��a��0!�	���Zba�&ss�8����}�{��L���o�G<������No{���v�m�.���Y����0&d;.D�
 0L@�&d;����	���l'@�/j��=J�,��QK@����f5�{�����������*�%�4�%&�_�l��}�Z!a2��m��'�	�N��8�o��a��0!�	���Zba�&ss����>�����Vg��l��������pz��^T�_�jU�|��g�3�
	��tl#@ \��; @`��81L�v�	'�	�N�@- ^�{�0Y������q����g��L.���t�;�i�Y}���L���o���+�L�l���}�Z!a2��m��'�	�N��8�o��a��0!�	���Zba�&ss�������K���=f�����������Z��/_�|�>s��0�K�6B�����	���l'@@��7@��0qb�����E-��G	���9j	����L�7S���~����n��:����-�u�{]������>lE�0��� @� @� �����:�&c�tN���/o����&�z��f�t�A���~w�a�����;k�|VH��G�> @� @��0�7@`$k��I��-�����}m��$3�{��^��s�I���_:���fn�� @� @�Tz��Ck�W�����K�m�]����$P�R1L����^����xz�s�3�uu� @� @� p�	H��~�J^����7i��v��i�}�MGqD�d�M��~��j������U2����O+V�X�3� @� @� 0�&��j�y�@���^��.��_����t��'��>���kO @� @� @��L	��"^���{�������&�Z��9��w�9~��i�=�h�yB� @� @�	H�R�n,z�^:����E]���~��_=)�XV�I @� @� @���	H�,�7"@� @� @������Rm�E� @� @�,�����Q{# @� @� @`�
H�,��q^ @� @� @���	H�,�7"@� @� @������Rm�52�[n�%}���N����S��K����������/_>�s���F����}:��������6�h���N;�����K�n���:������_>p[��>��OZ�re��#c,��3�����O?=]y��i��v�b��[o=�N���?��O����:s���;��c����l;��3�M7�����d��7N������^ 0F�����QG����G?��s��y������7����w�9����}��]�:�1W_}u��w�S}���/q���u�����y��,-��}�c�g�������7���/�{H���������Nw��\���-�� �V ������^��O���[�~��s"@`B�����A4-����?��o���x����c������:�
�S`!�������^{
���G��Y 0P���|�>�����o�y`��YNs�'����U�z9�Y}�_��W�����Y�{��_=0&p�����O�����13n�����]v�e����%(���8�GZz���xGSv�3;��AoY�:=L�_��@\t�E)_<�|�P����~i�M6I���gR�������?�~�Q���x�^��8���~�#d�=�L�W�N�w\#=����W�b���[n���i�^��I�k��U� 0�����^��y�c�I'�T�8'N�;�������s�9�Z����/x��c*��	��`�
�_��<�1����U��u�Y���������|�b�>v @`�	�$G����t���W'�&��o��}������7V��~�����T����W���g���E��_�����/��nw�[z���.�������J�V������,1���>�Aj�*z�l��6����B�_<���N�sL]����0I/{��n+ze�)!$0O�����Uf5~�����M��ofT��M�y�f7�U�?�A�+��������{y�C������I�f�W����UW]5����)�j��	L��B>��GM��I���������������_�Y�k��f��@\#�r�)M<��N�6���&��2���?5�{B��������%�fc�����.h�����?�{�����f[��z������%\o�}��h�y���������%p��7�r������bP�������:_���
�����<<���Y���_�XL�@t��P� ����k�=�t�f�	(H ��������e$T�x���<���]�4;zB�@���_�Uq"nd�\�|(M9��#gn����")�{�V���Y7$��������:�B�@1��k^��������x\W����i�P������yt�f������=�=��f}��E/zQ�=�<�����{$@`�1U@}��'�����?�������4�J/�w�0Y����_�{��^(��Q�I �K�Z�#�2�&E\��a1V��+�h�E�/�s7�j}|q� P���~�o���&v��������t�#P��!����<!�����#���fm�����_i�7'��n��w������w�j��&�|�#��-���(��_�<Y������o7�1���������x����|F_��������A	�������z��.^����a���b!�'pN/��+���--_�|�����b�����������
&C��OL����������<�z^�����������(�C��{�����H1��n8HjI`��3�i�U� h�����G<b�����3R��R�5>k+{�_���)��%��>�����S=?R�i� �+�?�H�W�����^b!@`�b���3���}�]!'4��������$�k�z���$���|��_NOx���1�N;�����'�/|�)�#���<$�!��9r�����=o�>V 0:�����H?���R&����?'QN�4�������_|��N��Y�X�:���/���>;��wH���ku�#�M�2&��I�v�M�v]o�������� 0�y��f��������G��/bG�c!@�����������| �[���&~��g0pg+	K��?������K.�U��������u��^�:�%g��/P���t�&1t_���{�S2����On����W���?����L��~s�����-o�W{$@`������\�/�k=��}u\����G=L�_���+_��t����|�#�{��A�_�������x�>V P�@'8=���M���'�J�c��X��}i��������E�k��+W�|��~��_U��P_��7�bk���%/�����>�����>��[��5m�����Y��+6������o>k+_��/�8����YU�u�.��W����;M%�<&U��|�4}����bCl��t������~� 0~s�0�������|��R�����3���Y<��3S|��%�s���UO���1W��{���|RN��*�
���B{��u�"jW��x=I��#������
_/�3v�w�_N��$e�����b�����
���>��/|a��.��R��H�����<b����o�}��V������o�4c�N1^��^��f{���B��x,�3��q"����>��(x�����;����3���x����}>��M����c���x���u�����������&��+���m�9���}��F������%~9��k��ug=�/��&��_�dJ/�R�8������K�U,'i��2�s+��}����*P��Z�i����B���\{��������`�k��z1y��%.:bh���>s�s#���{���:^O������u�y�
�t����57,�#���@�$�k��J��u�YM��	�-���\	��!��>������/~�����=�:�z�<&V���qoCY'�
����&L�{�"*?��X3h��k4������K��$L�n^���@����u��EE�8� 0����������-�&f�C%����Ve����q���F�Xq`����77���J�V�;��N��>���Z��N�<�iOkU��	�@�=c]==�����>�D���M\9��S�}�y��5�I$d�{M�{���=�\+	X:��0���E/��]?i����������?�\4��x����� ��_p����E��U����n���I�?jH`�g>���oP|�����T�������w�}��w�m�K��&�r��7�6�'P���0��A��
o���Gk�-~���W�����d�������!j!@`i�7a�����|�+M���K[����0��Sic*�����	�f.]tQ���#����k
��5cz��a���;�f#�]�z�@�'=�IU�1B-���B>�1O}�"���z����f!@���������g=�Y�6����[n���%�~���AR(0,aR��-�\���^=��&F��3��L���s���H���O�d}�_��?��p�k�<�����������W_=p��WJ�����6o���w���A7)�/:"Y(W �����.��A��b���O���_������������_��:�
���B?�1k|��q�������?���M� 0�����\Es-x`s�?���q���z����xM��xK��d��
����&�N�����M�����N�DOz��6O,Y�a	���������r�A��{������{#��H�Lb���@�K��y�{����?I�q�O+��������".P�������.����K���O~�������#�\z���6OO��~��G��F�S�H�I��/%C�5<�xj9k���'�t�� �s�<�!��'M>���6�x����S�FK_`X�$n��C�<���?T��I���G\W��_���~u�	��O>�:&�#��_��\��wK_`X�d!�/��q�Q/9����+��bZ|����E�d[]�
�/4b��:`�
���E�������XI�������Zu,��1z��K��qL����V���/}���#c.���|�����=�b��'�8�2N����|�;��1!��%���cD<�M���i���(3m>�L�	Xz�&q��Ch���u�!�2�b����;M�x+�g�q���|d/�XX�s%L������������cR+�5��Wk�&�
�P�@�R��/|as!Q�=��������~>��~�4�SN9e�EF��.��W�������B?��K��'�f����k������1oQ|��s?�%�<9��c�����Kb�����j>����%.=���=l>��~���~�Y���������{�����!1��$�G�����u
��z3���m�_D�$�+��P?�������<�I��AT2�X��]_��g����������r���m��s������&-[�,�^&i��s`+c-���|\����Rn'm�������'.���*Vl���i�w��-��	�,��.�,�}��)��=�y�y}��{���/�����{��d��-C��%��s�M�V���_l���C�)}	��[X� @� @� @���&C��@� @� @��. aRz� @� @� 0T@�d(� @� @� @���$LJoa�#@� @� @��
H�%� @� @� P���I�-�~ @� @� @��P	��Dv @� @� @�J�0)���� @� @�* a2�� @� @� @�@�&���� @� @� @�C$L��� @� @�(]@���V? @� @� @`����P"; @� @� @��H�����G� @� @��0Jd @� @� @�t	��[X� @� @� @���&C��@� @� @��. aRz� @� @� 0T@�d(� @� @� @���$LJoa�#@� @� @��
H�%� @� @� P���I�-�~ @� @� @��P	��Dv @� @� @�J�0)���� @� @�* a2�� @� @� @�@�&���� @� @� @�C$L��� @� @�(]@���V? @� @� @`����P"; @� @� @��H�����G� @� @��0Jd @� @� @�t	��[X� @� @� @���&C��@� @� @��. aRz� @� @� 0T@�d(� @� @� @���$LJoa�#@� @� @��
H�%� @� @� P���I�-�~ @� @� @��P	��Dv @� @� @�J�0)���� @� @�* a2�� @��}�=��t�e���v�-=���}�d�K]�fM�p�
�]� @���&�
�@� @��	�����g?�Yz��_�����.���r��7�����w�3�<3}��K��� @��yH����� @��V�����^����8=�iOK�w\�PJ#@� �&���- @� 0H����s����g������� @`$L����# @�E
H���*E� 0�&c�pN� @���	|��H���g�^{�����'�����N������C�{����=�a��CI�l���/���t����o|���[l�E����W��9G�������?����<���h����u��'����m���~������	��<�!���}o��~���j����>4�0Wq~�eu�Q��g=�Y���|f��z���������T���o���>�4�c�1���8���>���K�����>����v�5��On�������~7}�K_J^xa�c���_�����[���;/���H?����	����x�i���;�����_��W��&�����9����v��U������/~�,���= @�XL	����^ @�,������W��=�A�����n��<�������Nw�6]y��������3����\8������}�js$"�KL~�|���y������i���rKZ�lY��N�D�a��U������w�����]s�5������:D}�~��W�"����;W�������NK[n�e��������}hZ��/����_6e��5k��������{D�(�(�x����������SO��L3����]"�������< @��@�B� @���^����������_��^N��r��^�����=@�7������}�s��@��u�Y����Y��6������0i��O>��O7�s�^��I�f}NZ�>��O�.����)����=9�m9���{�4�����rb�w�����y]���h�������_��=fz����{Q��K���{�4���x]�w�AU�?��3{�6O��{Q��k�y����z}���V���3U99����PzW_}u/'Zz�gIS~�X @��Z ���? @�nO���I�k�[�^���{eT7���G6����T�"�2s9���m���.&y�����1�&�E%�{����my�j}l;���{y�������i��u����J�r��77��_�H�������8�?���X�`�1��M�:����j����5��m�D�:�!��m�� @��(���X @�(W��+jx�u���)���yN�!�b����%���<���=)����!�6�`�j{����\9�Q
K��������j~�x�{�4s���"1dX#���<-'�pB�?�����)���.w�����?�|�3��r�'��X1J,'�xbz��_=������W+�.�����1O�#����9�yN5|WMs���_��_T�����}�K�z���6������y$@� ��&�-�� @�XT�:a��\z�����5�yMz�[�ZMf~���W�cr��t��	����'�<�U�u�]�%%�&L�����
oxC��U����/W���HRl����>g�}v������u�/�!��ai6�}r�����_V���%&b��Z��S���<X�wLP�G�#�6�Y����J����oO����c�0�;������m^ @��������/ @��"P'L�� U�`�����R����=�q���w�f����b������;V��&L��Z��������������������&O�S���\$���>���c�X���?���MozS�Cu5��������I����uR�������=Lb��_m������?��������h�	 @�,�����0{ @�F%���I�o��#���?O_���R�<=����j��7�%�\R
/��0�������+���I��#���/���Cz���w��V�]�zWz�+_Ym����������{V���G����o~��)���_������~t���'l��%�2�9�UR
�I��v�-E�H��'L^�����?<��]R�d��2W�$����R$��N_���a��r���W�����G @�#�0	�7%@� @`��0����~��_��������#���{rD"e�=���)Oz���*]u�Ui����V������I��I��K���+��"��>�Iq>�e�s�9)������x�;VE��-u��HJ��"�n�����,��%��^,�D�$�&��|)o�q���O$���������U�'��0����^��=���'��6_�Yg�����g7��\}��i������# @����L��� @��%�����oZ���b�[��u���}��U��8��/~��c~��_4��>��j�I'������L;&'z9��l���f{�h�Z�{~�����f}<����;�Pm��>m�>�����'~���G�:��K�����G?Z�ns����R/������u�m���k�G��!��uy^��u�'�xi����>������P�=OL_��H� @`$i$��M	 @� �H��0����1��y��^$=b�Cp����f��_\������u�9�������~�)OyJ�-�0�&�>���]y���q�gH/���w��'W��?GuT���o|c���g����^�t��7��q���#�)+�3��{�T�eE2�N�|������9�?�r��VeE�y�����^Z�E�/��=X���&M")�U��G @�#0$W�r� @� P��B��:�������:
%���a��e�0Z1��1�So����U��9Y���1hH����$���X�U/{���a�V����e���PZ�l�I�:��s��1��H���=����t�	'T��r�$��7�i&��a�bh�X���?U�����7����Peu�b�V�^��W<��I����%�K���8������^]�Co�P]�r�������_z$@� 0���j�1 @�A��C�z8�����������r�)�<z�-[k����~���ET�s���'no������������a��
����>0��J=;�<��i��'yo����f.q��������Nf��DO��-��i�9����=T��{�f{]v�����J��o�?��2m��/������D3�X]F<F��9[ @�,=L�U�� @���I���FL�~�{�;m��6���Z=H�<������}��6�s���1�z�*m���U��
6��s��Q����w���+d�-��wy�W����N;�4�AV,��w����f�m��GL��4K9	��-[VY�\����	 @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @������[�� @� @� @�#�0y8 @� @� @`�&�n�O� @� @��\@�d�M� @� @� @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @������[�� @� @� @�#�0y8 @� @� @`�&�n�O� @� @��\@�d�M� @� @� @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @������[�� @� @� @�#�0y8 @� @� @`�&�n�O� @� @��\@�d�M� @� @� @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @������[�� @� @� @�#�0y8 @� @� @`�&�n�O� @� @��\@�d�M� @� @� @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @������[�� @� @� @�#�0y8 @� @� @`�&�n�O� @� @��\@�d�M� @� @� @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @������[�� @� @� @�#�0y8 @� @� @`�&�n�O� @� @��\@�d�M� @� @� @��QH����? @� @� 0r	��7� @� @� @�F- a2��� @� @� @���$LF�N� @� @����t��uc
uIEND�B`�
#34Tomas Vondra
tomas.vondra@enterprisedb.com
In reply to: Simon Riggs (#33)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On 11/29/22 13:49, Simon Riggs wrote:

On Thu, 17 Nov 2022 at 17:29, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

(yes, the last line shows x10 performance patched, that is not a typo)

New version of patch, now just a one-line patch!

Results show it's still a good win for XidInMVCCSnapshot().

I'm a bit confused - for which workload/benchmark are there results?
It's generally a good idea to share the scripts used to run the test and
not just a chart.

regards

--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#35Julien Tachoires
julmon@gmail.com
In reply to: Tomas Vondra (#34)
1 attachment(s)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Hi Tomas,

Le mar. 29 nov. 2022 à 14:06, Tomas Vondra
<tomas.vondra@enterprisedb.com> a écrit :

On 11/29/22 13:49, Simon Riggs wrote:

On Thu, 17 Nov 2022 at 17:29, Simon Riggs <simon.riggs@enterprisedb.com> wrote:

(yes, the last line shows x10 performance patched, that is not a typo)

New version of patch, now just a one-line patch!

Results show it's still a good win for XidInMVCCSnapshot().

I'm a bit confused - for which workload/benchmark are there results?
It's generally a good idea to share the scripts used to run the test and
not just a chart.

The scripts have been attached to this thread with the initial
performance results.
Anyway, re-sending those (including a minor fix).

--
Julien Tachoires
EDB

Attachments:

subtrans-benchmark.tar.gzapplication/x-gzip; name=subtrans-benchmark.tar.gzDownload
#36Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#33)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Simon Riggs <simon.riggs@enterprisedb.com> writes:

New version of patch, now just a one-line patch!

Of course, there's all the documentation and comments that you falsified.
Also, what of the SubTransSetParent call in ProcessTwoPhaseBuffer?

(The one in ProcArrayApplyXidAssignment is actually okay, though the
comment making excuses for it no longer is.)

Also, if we're going to go over to a one-level structure in pg_subtrans,
we really ought to simplify the code in subtrans.c accordingly, and
get rid of the extra lookup currently done for the top parent's parent.

I still wonder whether we'll regret losing information about the
subtransaction tree structure, as discussed in the other thread [1]/messages/by-id/CANbhV-HYfP0ebZRERkpt84ZCDsNX-UYJGYsjfS88jtbYzY+KcQ@mail.gmail.com.
That seems like the main barrier to proceeding with this.

regards, tom lane

[1]: /messages/by-id/CANbhV-HYfP0ebZRERkpt84ZCDsNX-UYJGYsjfS88jtbYzY+KcQ@mail.gmail.com

#37Andres Freund
andres@anarazel.de
In reply to: Tom Lane (#36)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

Hi,

On 2022-11-29 13:30:02 -0500, Tom Lane wrote:

I still wonder whether we'll regret losing information about the
subtransaction tree structure, as discussed in the other thread [1].
That seems like the main barrier to proceeding with this.

Yea, this has me worried. I suspect that we have a bunch of places relying on
this. I'm not at all convinced that optimizing XidInMVCCSnapshot() is a good
reason for this structural change, given that there's other possible ways to
optimize (e.g. my proposal to add overflowed subxids to the Snapshot during
lookup when there's space).

Greetings,

Andres Freund

#38Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#37)
Re: SUBTRANS: Minimizing calls to SubTransSetParent()

On Tue, Nov 29, 2022 at 1:35 PM Andres Freund <andres@anarazel.de> wrote:

On 2022-11-29 13:30:02 -0500, Tom Lane wrote:

I still wonder whether we'll regret losing information about the
subtransaction tree structure, as discussed in the other thread [1].
That seems like the main barrier to proceeding with this.

Yea, this has me worried.

Me, too.

--
Robert Haas
EDB: http://www.enterprisedb.com