Assertion failure with barriers in parallel hash join

Started by Michael Paquierover 5 years ago19 messages
#1Michael Paquier
michael@paquier.xyz

Hi all,

prion, that uses -DRELCACHE_FORCE_RELEASE -DCATCACHE_FORCE_RELEASE,
has just failed with an interesting failure:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=prion&dt=2020-09-29%2005%3A24%3A11

The assertion failure happens in a parallel worker when attempting to
attach a barrier:
#2 0x00000000009027d2 in ExceptionalCondition
(conditionName=conditionName@entry=0xa80846 "!barrier->static_party",
errorType=errorType@entry=0x955e22 "FailedAssertion",
fileName=fileName@entry=0xa807a8
"/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/storage/ipc/barrier.c",
lineNumber=lineNumber@entry=218) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/utils/error/assert.c:67
#3 0x00000000007b6b1f in BarrierAttach
(barrier=barrier@entry=0x7f73c9d76008) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/storage/ipc/barrier.c:218
#4 0x0000000000682ebf in ExecParallelHashJoinNewBatch
(hjstate=<optimized out>, hjstate=<optimized out>) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/executor/nodeHashjoin.c:1132
#5 ExecHashJoinImpl (parallel=true, pstate=0x1248d88) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/executor/nodeHashjoin.c:560
#6 ExecParallelHashJoin (pstate=0x1248d88) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/executor/nodeHashjoin.c:607
#7 0x0000000000666d48 in ExecProcNodeInstr (node=0x1248d88) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/backend/executor/execProcnode.c:466
#8 0x000000000065f322 in ExecProcNode (node=0x1248d88) at
/home/ec2-user/bf/root/REL_13_STABLE/pgsql.build/../pgsql/src/include/executor/executor.h:245

Thanks,
--
Michael

#2Thomas Munro
thomas.munro@gmail.com
In reply to: Michael Paquier (#1)
Re: Assertion failure with barriers in parallel hash join

On Tue, Sep 29, 2020 at 7:11 PM Michael Paquier <michael@paquier.xyz> wrote:

#2 0x00000000009027d2 in ExceptionalCondition
(conditionName=conditionName@entry=0xa80846 "!barrier->static_party",

#4 0x0000000000682ebf in ExecParallelHashJoinNewBatch

Thanks. Ohhh. I think I see how that condition was reached and what
to do about it, but I'll need to look more closely. I'm away on
vacation right now, and will update in a couple of days when I'm back
at a real computer.

#3Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#2)
2 attachment(s)
Re: Assertion failure with barriers in parallel hash join

On Tue, Sep 29, 2020 at 9:12 PM Thomas Munro <thomas.munro@gmail.com> wrote:

On Tue, Sep 29, 2020 at 7:11 PM Michael Paquier <michael@paquier.xyz> wrote:

#2 0x00000000009027d2 in ExceptionalCondition
(conditionName=conditionName@entry=0xa80846 "!barrier->static_party",

#4 0x0000000000682ebf in ExecParallelHashJoinNewBatch

Thanks. Ohhh. I think I see how that condition was reached and what
to do about it, but I'll need to look more closely. I'm away on
vacation right now, and will update in a couple of days when I'm back
at a real computer.

Here's a throw-away patch to add some sleeps that trigger the problem,
and a first draft fix. I'll do some more testing of this next week
and see if I can simplify it.

Attachments:

0001-Inject-fault-timing.patchtext/x-patch; charset=US-ASCII; name=0001-Inject-fault-timing.patchDownload
From 65f70e0be36ec61e1993907162cfd4edac46e063 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 2 Oct 2020 15:24:23 +1300
Subject: [PATCH 1/2] Inject fault timing

---
 src/backend/executor/nodeHash.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index ea69eeb2a1..244805e69b 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -25,6 +25,7 @@
 
 #include <math.h>
 #include <limits.h>
+#include <unistd.h>
 
 #include "access/htup_details.h"
 #include "access/parallel.h"
@@ -585,6 +586,13 @@ ExecHashTableCreate(HashState *state, List *hashOperators, List *hashCollations,
 		ParallelHashJoinState *pstate = hashtable->parallel_state;
 		Barrier    *build_barrier;
 
+		if (ParallelWorkerNumber >= 1)
+		{
+			elog(LOG, "a short nap before attaching to build_barrier...");
+			sleep(2);
+			elog(LOG, "nap finished");
+		}
+
 		/*
 		 * Attach to the build barrier.  The corresponding detach operation is
 		 * in ExecHashTableDetach.  Note that we won't attach to the
@@ -3198,6 +3206,9 @@ ExecHashTableDetach(HashJoinTable hashtable)
 			if (DsaPointerIsValid(pstate->batches))
 			{
 				dsa_free(hashtable->area, pstate->batches);
+				elog(LOG, "batch array freed, taking a long nap...");
+				sleep(5);
+				elog(LOG, "finished nap, clearing pointer");
 				pstate->batches = InvalidDsaPointer;
 			}
 		}
-- 
2.20.1

0002-Fix-race-condition-in-parallel-hash-join-batch-clean.patchtext/x-patch; charset=US-ASCII; name=0002-Fix-race-condition-in-parallel-hash-join-batch-clean.patchDownload
From 21f745905dcaff738326434943e70c4292aae4a4 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 2 Oct 2020 15:53:44 +1300
Subject: [PATCH 2/2] Fix race condition in parallel hash join batch cleanup.

With unlucky timing and parallel_leader_participation off, PHJ could
attempt to access per-batch state just as it was being freed.  There was
code intended to prevent that by checking for a cleared pointer, but it
was racy.  Fix, by introducing an extra barrier phase.  The new phase
PHJ_BUILD_RUNNING means that it's safe to access the per-batch state to
find a batch to help with, and PHJ_BUILD_DONE means that it is too late.
The last to detach will free the array of per-batch state as before, but
now it will also atomically advance the phase at the same time, so that
late attachers can avoid the hazard.  This mirrors the way per-batch
hash tables are freed (see phases PHJ_BATCH_PROBING and PHJ_BATCH_DONE).

Revealed by a build farm failure, where BarrierAttach() failed a sanity
check assertion, because the memory had been clobbered by dsa_free().

Discussion: https://postgr.es/m/20200929061142.GA29096%40paquier.xyz
---
 src/backend/executor/nodeHash.c     | 47 ++++++++++++++++++++---------
 src/backend/executor/nodeHashjoin.c | 38 +++++++++++++----------
 src/include/executor/hashjoin.h     |  3 +-
 3 files changed, 56 insertions(+), 32 deletions(-)

diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 244805e69b..b1013b452b 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -334,14 +334,21 @@ MultiExecParallelHash(HashState *node)
 	hashtable->nbuckets = pstate->nbuckets;
 	hashtable->log2_nbuckets = my_log2(hashtable->nbuckets);
 	hashtable->totalTuples = pstate->total_tuples;
-	ExecParallelHashEnsureBatchAccessors(hashtable);
+
+	/*
+	 * Unless we're completely done and the batch state has been freed, make
+	 * sure we have accessors.
+	 */
+	if (BarrierPhase(build_barrier) < PHJ_BUILD_DONE)
+		ExecParallelHashEnsureBatchAccessors(hashtable);
 
 	/*
 	 * The next synchronization point is in ExecHashJoin's HJ_BUILD_HASHTABLE
-	 * case, which will bring the build phase to PHJ_BUILD_DONE (if it isn't
+	 * case, which will bring the build phase to PHJ_BUILD_RUNNING (if it isn't
 	 * there already).
 	 */
 	Assert(BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER ||
+		   BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING ||
 		   BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 }
 
@@ -632,7 +639,7 @@ ExecHashTableCreate(HashState *state, List *hashOperators, List *hashCollations,
 		/*
 		 * The next Parallel Hash synchronization point is in
 		 * MultiExecParallelHash(), which will progress it all the way to
-		 * PHJ_BUILD_DONE.  The caller must not return control from this
+		 * PHJ_BUILD_RUNNING.  The caller must not return control from this
 		 * executor node between now and then.
 		 */
 	}
@@ -3056,14 +3063,11 @@ ExecParallelHashEnsureBatchAccessors(HashJoinTable hashtable)
 	}
 
 	/*
-	 * It's possible for a backend to start up very late so that the whole
-	 * join is finished and the shm state for tracking batches has already
-	 * been freed by ExecHashTableDetach().  In that case we'll just leave
-	 * hashtable->batches as NULL so that ExecParallelHashJoinNewBatch() gives
-	 * up early.
+	 * We should never see a state where the batch-tracking array is freed,
+	 * because we should have given up sooner if we join when the build barrier
+	 * has reached the PHJ_BUILD_DONE phase.
 	 */
-	if (!DsaPointerIsValid(pstate->batches))
-		return;
+	Assert(DsaPointerIsValid(pstate->batches));
 
 	/* Use hash join memory context. */
 	oldcxt = MemoryContextSwitchTo(hashtable->hashCxt);
@@ -3183,9 +3187,17 @@ ExecHashTableDetachBatch(HashJoinTable hashtable)
 void
 ExecHashTableDetach(HashJoinTable hashtable)
 {
-	if (hashtable->parallel_state)
+	ParallelHashJoinState *pstate = hashtable->parallel_state;
+
+	/*
+	 * If we're involved in a parallel query, we must either have got all the
+	 * way to PHJ_BUILD_RUNNING, or joined too late and be in PHJ_BUILD_DONE.
+	 */
+	Assert(!pstate ||
+		   BarrierPhase(&pstate->build_barrier) >= PHJ_BUILD_RUNNING);
+
+	if (pstate && BarrierPhase(&pstate->build_barrier) == PHJ_BUILD_RUNNING)
 	{
-		ParallelHashJoinState *pstate = hashtable->parallel_state;
 		int			i;
 
 		/* Make sure any temporary files are closed. */
@@ -3201,8 +3213,14 @@ ExecHashTableDetach(HashJoinTable hashtable)
 		}
 
 		/* If we're last to detach, clean up shared memory. */
-		if (BarrierDetach(&pstate->build_barrier))
+		if (BarrierArriveAndDetach(&pstate->build_barrier))
 		{
+			/*
+			 * Late joining processes will see this state and give up
+			 * immediately.
+			 */
+			Assert(BarrierPhase(&pstate->build_barrier) == PHJ_BUILD_DONE);
+
 			if (DsaPointerIsValid(pstate->batches))
 			{
 				dsa_free(hashtable->area, pstate->batches);
@@ -3212,9 +3230,8 @@ ExecHashTableDetach(HashJoinTable hashtable)
 				pstate->batches = InvalidDsaPointer;
 			}
 		}
-
-		hashtable->parallel_state = NULL;
 	}
+	hashtable->parallel_state = NULL;
 }
 
 /*
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 5532b91a71..b996557ac4 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -45,7 +45,8 @@
  *   PHJ_BUILD_ALLOCATING            -- one sets up the batches and table 0
  *   PHJ_BUILD_HASHING_INNER         -- all hash the inner rel
  *   PHJ_BUILD_HASHING_OUTER         -- (multi-batch only) all hash the outer
- *   PHJ_BUILD_DONE                  -- building done, probing can begin
+ *   PHJ_BUILD_RUNNING               -- building done, probing can begin
+ *   PHJ_BUILD_DONE                  -- all work complete, one frees batches
  *
  * While in the phase PHJ_BUILD_HASHING_INNER a separate pair of barriers may
  * be used repeatedly as required to coordinate expansions in the number of
@@ -73,7 +74,7 @@
  * batches whenever it encounters them while scanning and probing, which it
  * can do because it processes batches in serial order.
  *
- * Once PHJ_BUILD_DONE is reached, backends then split up and process
+ * Once PHJ_BUILD_RUNNING is reached, backends then split up and process
  * different batches, or gang up and work together on probing batches if there
  * aren't enough to go around.  For each batch there is a separate barrier
  * with the following phases:
@@ -95,11 +96,16 @@
  *
  * To avoid deadlocks, we never wait for any barrier unless it is known that
  * all other backends attached to it are actively executing the node or have
- * already arrived.  Practically, that means that we never return a tuple
- * while attached to a barrier, unless the barrier has reached its final
- * state.  In the slightly special case of the per-batch barrier, we return
- * tuples while in PHJ_BATCH_PROBING phase, but that's OK because we use
- * BarrierArriveAndDetach() to advance it to PHJ_BATCH_DONE without waiting.
+ * finished.  Practically, that means that we never emit a tuple while attached
+ * to a barrier, unless the barrier has reached a phase that means that no
+ * process will wait on it again.  We emit tuples while attached to the build
+ * barrier in phase PHJ_BUILD_RUNNING, and to a per-batch barrier in phase
+ * PHJ_BATCH_PROBING.  These are advanced to PHJ_BUILD_DONE and PHJ_BATCH_DONE
+ * respectively without waiting, using BarrierArriveAndDetach().  The last to
+ * detach receives a different return value so that it knows that it's safe to
+ * clean up.  Any straggler process that attaches after that phase is reached
+ * will see that it's too late to participate or access the relevant shared
+ * memory objects.
  *
  *-------------------------------------------------------------------------
  */
@@ -317,6 +323,7 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 
 					build_barrier = &parallel_state->build_barrier;
 					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER ||
+						   BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING ||
 						   BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 					if (BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER)
 					{
@@ -328,10 +335,17 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 							ExecParallelHashJoinPartitionOuter(node);
 						BarrierArriveAndWait(build_barrier,
 											 WAIT_EVENT_HASH_BUILD_HASH_OUTER);
+					} else if (BarrierPhase(build_barrier) == PHJ_BUILD_DONE) {
+						/*
+						 * If we attached so late that the job is finished
+						 * and the batch state has been freed, we can return
+						 * immediately.
+						 */
+						return NULL;
 					}
-					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 
 					/* Each backend should now select a batch to work on. */
+					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING);
 					hashtable->curbatch = -1;
 					node->hj_JoinState = HJ_NEED_NEW_BATCH;
 
@@ -1090,14 +1104,6 @@ ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
 	int			start_batchno;
 	int			batchno;
 
-	/*
-	 * If we started up so late that the batch tracking array has been freed
-	 * already by ExecHashTableDetach(), then we are finished.  See also
-	 * ExecParallelHashEnsureBatchAccessors().
-	 */
-	if (hashtable->batches == NULL)
-		return false;
-
 	/*
 	 * If we were already attached to a batch, remember not to bother checking
 	 * it again, and detach from it (possibly freeing the hash table if we are
diff --git a/src/include/executor/hashjoin.h b/src/include/executor/hashjoin.h
index eb5daba36b..443ba6eb9f 100644
--- a/src/include/executor/hashjoin.h
+++ b/src/include/executor/hashjoin.h
@@ -258,7 +258,8 @@ typedef struct ParallelHashJoinState
 #define PHJ_BUILD_ALLOCATING			1
 #define PHJ_BUILD_HASHING_INNER			2
 #define PHJ_BUILD_HASHING_OUTER			3
-#define PHJ_BUILD_DONE					4
+#define PHJ_BUILD_RUNNING				4
+#define PHJ_BUILD_DONE					5
 
 /* The phases for probing each batch, used by for batch_barrier. */
 #define PHJ_BATCH_ELECTING				0
-- 
2.20.1

#4Melanie Plageman
melanieplageman@gmail.com
In reply to: Thomas Munro (#3)
Re: Assertion failure with barriers in parallel hash join

On Thu, Oct 1, 2020 at 8:08 PM Thomas Munro <thomas.munro@gmail.com> wrote:

On Tue, Sep 29, 2020 at 9:12 PM Thomas Munro <thomas.munro@gmail.com>
wrote:

On Tue, Sep 29, 2020 at 7:11 PM Michael Paquier <michael@paquier.xyz>

wrote:

#2 0x00000000009027d2 in ExceptionalCondition
(conditionName=conditionName@entry=0xa80846 "!barrier->static_party",

#4 0x0000000000682ebf in ExecParallelHashJoinNewBatch

Thanks. Ohhh. I think I see how that condition was reached and what
to do about it, but I'll need to look more closely. I'm away on
vacation right now, and will update in a couple of days when I'm back
at a real computer.

Here's a throw-away patch to add some sleeps that trigger the problem,
and a first draft fix. I'll do some more testing of this next week
and see if I can simplify it.

I was just taking a look at the patch and noticed the commit message
says:

With unlucky timing and parallel_leader_participation off...

Is parallel_leader_participation being off required to reproduce the
issue?

#5Thomas Munro
thomas.munro@gmail.com
In reply to: Melanie Plageman (#4)
Re: Assertion failure with barriers in parallel hash join

On Tue, Oct 13, 2020 at 12:15 PM Melanie Plageman
<melanieplageman@gmail.com> wrote:

On Thu, Oct 1, 2020 at 8:08 PM Thomas Munro <thomas.munro@gmail.com> wrote:

On Tue, Sep 29, 2020 at 9:12 PM Thomas Munro <thomas.munro@gmail.com> wrote:
Here's a throw-away patch to add some sleeps that trigger the problem,
and a first draft fix. I'll do some more testing of this next week
and see if I can simplify it.

I was just taking a look at the patch and noticed the commit message
says:

With unlucky timing and parallel_leader_participation off...

Is parallel_leader_participation being off required to reproduce the
issue?

Yeah, because otherwise the leader detaches last so the problem doesn't arise.

#6Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#5)
3 attachment(s)
Re: Assertion failure with barriers in parallel hash join

On Tue, Oct 13, 2020 at 12:18 PM Thomas Munro <thomas.munro@gmail.com> wrote:

On Tue, Oct 13, 2020 at 12:15 PM Melanie Plageman
<melanieplageman@gmail.com> wrote:

On Thu, Oct 1, 2020 at 8:08 PM Thomas Munro <thomas.munro@gmail.com> wrote:

On Tue, Sep 29, 2020 at 9:12 PM Thomas Munro <thomas.munro@gmail.com> wrote:
Here's a throw-away patch to add some sleeps that trigger the problem,
and a first draft fix. I'll do some more testing of this next week
and see if I can simplify it.

I was just taking a look at the patch and noticed the commit message
says:

With unlucky timing and parallel_leader_participation off...

Is parallel_leader_participation being off required to reproduce the
issue?

Yeah, because otherwise the leader detaches last so the problem doesn't arise.

While working on Melanie's Parallel Hash Full Join patch I remembered
that this (apparently extremely rare) race still needs fixing. Here
is a slightly tidied version, which I'm adding to the next CF for CI
coverage.

Here also is a picture that comes from an unfinished description of
this algorithm that I've been trying to write, that might help explain
the change. It's a phase diagram, where you can see the phases "run"
(= all processes try to work on batches) and "done" (= one process is
freeing the shmem objects for tracking batches, anyone who attaches to
the barrier in this phase knows that it's not even safe to access
batch bookkeeping memory). Before this patch there is no "run", just
"done" (= process batches and then one process frees, which has a race
if someone else attaches really late, after the freeing has begun).
I'm currently wondering whether this can be further improved using
Melanie's new BarrierArriveAndDetachExceptLast() function.

(In the code the phase names have -ing on the end, I'll probably drop
those, because commit 3048898e73c did that to the corresponding wait
events.)

Attachments:

v2-0001-Inject-fault-timing.patchtext/x-patch; charset=US-ASCII; name=v2-0001-Inject-fault-timing.patchDownload
From 60c905edc75d66dd45475eb7d3e11b6f603d2143 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 2 Oct 2020 15:24:23 +1300
Subject: [PATCH v2 1/2] Inject fault timing

---
 src/backend/executor/nodeHash.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index c5f2d1d22b..168e463c72 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -25,6 +25,7 @@
 
 #include <math.h>
 #include <limits.h>
+#include <unistd.h>
 
 #include "access/htup_details.h"
 #include "access/parallel.h"
@@ -585,6 +586,13 @@ ExecHashTableCreate(HashState *state, List *hashOperators, List *hashCollations,
 		ParallelHashJoinState *pstate = hashtable->parallel_state;
 		Barrier    *build_barrier;
 
+		if (ParallelWorkerNumber >= 1)
+		{
+			elog(LOG, "a short nap before attaching to build_barrier...");
+			sleep(2);
+			elog(LOG, "nap finished");
+		}
+
 		/*
 		 * Attach to the build barrier.  The corresponding detach operation is
 		 * in ExecHashTableDetach.  Note that we won't attach to the
@@ -3198,6 +3206,9 @@ ExecHashTableDetach(HashJoinTable hashtable)
 			if (DsaPointerIsValid(pstate->batches))
 			{
 				dsa_free(hashtable->area, pstate->batches);
+				elog(LOG, "batch array freed, taking a long nap...");
+				sleep(5);
+				elog(LOG, "finished nap, clearing pointer");
 				pstate->batches = InvalidDsaPointer;
 			}
 		}
-- 
2.30.1

v2-0002-Fix-race-condition-in-parallel-hash-join-batch-cl.patchtext/x-patch; charset=US-ASCII; name=v2-0002-Fix-race-condition-in-parallel-hash-join-batch-cl.patchDownload
From d2f1341ceb48f54677a8b82810a6e4958312e6b8 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 2 Oct 2020 15:53:44 +1300
Subject: [PATCH v2 2/2] Fix race condition in parallel hash join batch
 cleanup.

With unlucky timing and parallel_leader_participation off, PHJ could
attempt to access per-batch state just as it was being freed.  There was
code intended to prevent that by checking for a cleared pointer, but it
was racy.  Fix, by introducing an extra barrier phase.  The new phase
PHJ_BUILD_RUNNING means that it's safe to access the per-batch state to
find a batch to help with, and PHJ_BUILD_DONE means that it is too late.
The last to detach will free the array of per-batch state as before, but
now it will also atomically advance the phase at the same time, so that
late attachers can avoid the hazard.  This mirrors the way per-batch
hash tables are freed (see phases PHJ_BATCH_PROBING and PHJ_BATCH_DONE).

Revealed by a build farm failure, where BarrierAttach() failed a sanity
check assertion, because the memory had been clobbered by dsa_free().

Back-patch to all supported releases.

Reported-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/20200929061142.GA29096%40paquier.xyz
---
 src/backend/executor/nodeHash.c     | 47 ++++++++++++++++++++---------
 src/backend/executor/nodeHashjoin.c | 40 ++++++++++++++----------
 src/include/executor/hashjoin.h     |  3 +-
 3 files changed, 58 insertions(+), 32 deletions(-)

diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 168e463c72..08c943b109 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -334,14 +334,21 @@ MultiExecParallelHash(HashState *node)
 	hashtable->nbuckets = pstate->nbuckets;
 	hashtable->log2_nbuckets = my_log2(hashtable->nbuckets);
 	hashtable->totalTuples = pstate->total_tuples;
-	ExecParallelHashEnsureBatchAccessors(hashtable);
+
+	/*
+	 * Unless we're completely done and the batch state has been freed, make
+	 * sure we have accessors.
+	 */
+	if (BarrierPhase(build_barrier) < PHJ_BUILD_DONE)
+		ExecParallelHashEnsureBatchAccessors(hashtable);
 
 	/*
 	 * The next synchronization point is in ExecHashJoin's HJ_BUILD_HASHTABLE
-	 * case, which will bring the build phase to PHJ_BUILD_DONE (if it isn't
+	 * case, which will bring the build phase to PHJ_BUILD_RUNNING (if it isn't
 	 * there already).
 	 */
 	Assert(BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER ||
+		   BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING ||
 		   BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 }
 
@@ -632,7 +639,7 @@ ExecHashTableCreate(HashState *state, List *hashOperators, List *hashCollations,
 		/*
 		 * The next Parallel Hash synchronization point is in
 		 * MultiExecParallelHash(), which will progress it all the way to
-		 * PHJ_BUILD_DONE.  The caller must not return control from this
+		 * PHJ_BUILD_RUNNING.  The caller must not return control from this
 		 * executor node between now and then.
 		 */
 	}
@@ -3056,14 +3063,11 @@ ExecParallelHashEnsureBatchAccessors(HashJoinTable hashtable)
 	}
 
 	/*
-	 * It's possible for a backend to start up very late so that the whole
-	 * join is finished and the shm state for tracking batches has already
-	 * been freed by ExecHashTableDetach().  In that case we'll just leave
-	 * hashtable->batches as NULL so that ExecParallelHashJoinNewBatch() gives
-	 * up early.
+	 * We should never see a state where the batch-tracking array is freed,
+	 * because we should have given up sooner if we join when the build barrier
+	 * has reached the PHJ_BUILD_DONE phase.
 	 */
-	if (!DsaPointerIsValid(pstate->batches))
-		return;
+	Assert(DsaPointerIsValid(pstate->batches));
 
 	/* Use hash join memory context. */
 	oldcxt = MemoryContextSwitchTo(hashtable->hashCxt);
@@ -3183,9 +3187,17 @@ ExecHashTableDetachBatch(HashJoinTable hashtable)
 void
 ExecHashTableDetach(HashJoinTable hashtable)
 {
-	if (hashtable->parallel_state)
+	ParallelHashJoinState *pstate = hashtable->parallel_state;
+
+	/*
+	 * If we're involved in a parallel query, we must either have got all the
+	 * way to PHJ_BUILD_RUNNING, or joined too late and be in PHJ_BUILD_DONE.
+	 */
+	Assert(!pstate ||
+		   BarrierPhase(&pstate->build_barrier) >= PHJ_BUILD_RUNNING);
+
+	if (pstate && BarrierPhase(&pstate->build_barrier) == PHJ_BUILD_RUNNING)
 	{
-		ParallelHashJoinState *pstate = hashtable->parallel_state;
 		int			i;
 
 		/* Make sure any temporary files are closed. */
@@ -3201,8 +3213,14 @@ ExecHashTableDetach(HashJoinTable hashtable)
 		}
 
 		/* If we're last to detach, clean up shared memory. */
-		if (BarrierDetach(&pstate->build_barrier))
+		if (BarrierArriveAndDetach(&pstate->build_barrier))
 		{
+			/*
+			 * Late joining processes will see this state and give up
+			 * immediately.
+			 */
+			Assert(BarrierPhase(&pstate->build_barrier) == PHJ_BUILD_DONE);
+
 			if (DsaPointerIsValid(pstate->batches))
 			{
 				dsa_free(hashtable->area, pstate->batches);
@@ -3212,9 +3230,8 @@ ExecHashTableDetach(HashJoinTable hashtable)
 				pstate->batches = InvalidDsaPointer;
 			}
 		}
-
-		hashtable->parallel_state = NULL;
 	}
+	hashtable->parallel_state = NULL;
 }
 
 /*
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 510bdd39ad..a9c263c071 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -45,7 +45,8 @@
  *   PHJ_BUILD_ALLOCATING            -- one sets up the batches and table 0
  *   PHJ_BUILD_HASHING_INNER         -- all hash the inner rel
  *   PHJ_BUILD_HASHING_OUTER         -- (multi-batch only) all hash the outer
- *   PHJ_BUILD_DONE                  -- building done, probing can begin
+ *   PHJ_BUILD_RUNNING               -- building done, probing can begin
+ *   PHJ_BUILD_DONE                  -- all work complete, one frees batches
  *
  * While in the phase PHJ_BUILD_HASHING_INNER a separate pair of barriers may
  * be used repeatedly as required to coordinate expansions in the number of
@@ -73,7 +74,7 @@
  * batches whenever it encounters them while scanning and probing, which it
  * can do because it processes batches in serial order.
  *
- * Once PHJ_BUILD_DONE is reached, backends then split up and process
+ * Once PHJ_BUILD_RUNNING is reached, backends then split up and process
  * different batches, or gang up and work together on probing batches if there
  * aren't enough to go around.  For each batch there is a separate barrier
  * with the following phases:
@@ -95,11 +96,16 @@
  *
  * To avoid deadlocks, we never wait for any barrier unless it is known that
  * all other backends attached to it are actively executing the node or have
- * already arrived.  Practically, that means that we never return a tuple
- * while attached to a barrier, unless the barrier has reached its final
- * state.  In the slightly special case of the per-batch barrier, we return
- * tuples while in PHJ_BATCH_PROBING phase, but that's OK because we use
- * BarrierArriveAndDetach() to advance it to PHJ_BATCH_DONE without waiting.
+ * finished.  Practically, that means that we never emit a tuple while attached
+ * to a barrier, unless the barrier has reached a phase that means that no
+ * process will wait on it again.  We emit tuples while attached to the build
+ * barrier in phase PHJ_BUILD_RUNNING, and to a per-batch barrier in phase
+ * PHJ_BATCH_PROBING.  These are advanced to PHJ_BUILD_DONE and PHJ_BATCH_DONE
+ * respectively without waiting, using BarrierArriveAndDetach().  The last to
+ * detach receives a different return value so that it knows that it's safe to
+ * clean up.  Any straggler process that attaches after that phase is reached
+ * will see that it's too late to participate or access the relevant shared
+ * memory objects.
  *
  *-------------------------------------------------------------------------
  */
@@ -317,6 +323,7 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 
 					build_barrier = &parallel_state->build_barrier;
 					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER ||
+						   BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING ||
 						   BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 					if (BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER)
 					{
@@ -329,9 +336,18 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 						BarrierArriveAndWait(build_barrier,
 											 WAIT_EVENT_HASH_BUILD_HASH_OUTER);
 					}
-					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
+					else if (BarrierPhase(build_barrier) == PHJ_BUILD_DONE)
+					{
+						/*
+						 * If we attached so late that the job is finished and
+						 * the batch state has been freed, we can return
+						 * immediately.
+						 */
+						return NULL;
+					}
 
 					/* Each backend should now select a batch to work on. */
+					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING);
 					hashtable->curbatch = -1;
 					node->hj_JoinState = HJ_NEED_NEW_BATCH;
 
@@ -1090,14 +1106,6 @@ ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
 	int			start_batchno;
 	int			batchno;
 
-	/*
-	 * If we started up so late that the batch tracking array has been freed
-	 * already by ExecHashTableDetach(), then we are finished.  See also
-	 * ExecParallelHashEnsureBatchAccessors().
-	 */
-	if (hashtable->batches == NULL)
-		return false;
-
 	/*
 	 * If we were already attached to a batch, remember not to bother checking
 	 * it again, and detach from it (possibly freeing the hash table if we are
diff --git a/src/include/executor/hashjoin.h b/src/include/executor/hashjoin.h
index d74034f64f..d8edd39923 100644
--- a/src/include/executor/hashjoin.h
+++ b/src/include/executor/hashjoin.h
@@ -258,7 +258,8 @@ typedef struct ParallelHashJoinState
 #define PHJ_BUILD_ALLOCATING			1
 #define PHJ_BUILD_HASHING_INNER			2
 #define PHJ_BUILD_HASHING_OUTER			3
-#define PHJ_BUILD_DONE					4
+#define PHJ_BUILD_RUNNING				4
+#define PHJ_BUILD_DONE					5
 
 /* The phases for probing each batch, used by for batch_barrier. */
 #define PHJ_BATCH_ELECTING				0
-- 
2.30.1

phj-barriers.pngimage/png; name=phj-barriers.pngDownload
�PNG


IHDR�����sBIT|d�tEXtSoftwaregnome-screenshot��> IDATx���}\��������K7Z��I�&	%qN��r�P�lso���L��6�K�����X���t���b�[�T#I�����|~���f�;tNW������X]������u��|�����0�!�BQ0*\ �B!D��%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�
]B!�����%�B!
�-�!��8jkk������B�BTVV���B����������:������---�����wG��T��j�c\� �B��y��1���p��Mdee!;;���055E������MMM���@]]���Guu5�B!�B!���QYY�@(�g����x������3\\\�����n9F�.!�B��P(�������8������	NNN������%,--��8-))Aff&����������������nnnpqq��
��$o�
]B!��#�X����#$$���������#!0d��o���Epvv6����������
B���?Guu5��cGhhh@SS��������������CMM
PVV���������s������S1g����q�k!r�
]B!��������C���];�������G�!..���HHH@^^�u�KKK�x<XZZB[[���������&��m���:TWWK�����";;[2�[QQ�>}�������������`�I
��G��G���������K�mB��
]B!�H�����������c���prrB�6mp��}������S(,,���F������c�����������"��������������
###���!**
;v�@AAV�Z�?����R�
EB�.!�B���#���!<<3f���5k��gO<}�G�AHH>|�3f`���pttl�����2\�|���K� ���OOOt��������������+W��O>A�d�����M!�(1�H�������jjjHOO����m[,^�={�D||<��_���c��=1bD�M�����i�p��)�����m���9�m��A�����8u�.^�[[[DGG�H6��Q�K!�(�k��a��8z�(._��={����s�����-���������HL�<�����;w���Kq��m���/HHH@����y�fXYY!66�7o��y�0a����s��p�
]B!D����c����������q��u�x<l��	C����>����^�zq��������h��{={���]�0c�<x�666���?:�uT�!��K!�(���|xyy�c��

E�.]p��Q�\�@`` �w��u��v��U,Z���g���p��
xyya�����w/]���hD�BQ���8p ���q��%�����n�:���QQQrY���a�p��]xyyA ���>���=������
8)))\�$-�
]B!D	l��.���G������8�����������q����lm����������[�n����������G}�������s\�$-�
]B!D�555a����k�0|�pl��	��O���;�k�.����t�����=z4����+V�����={6~��'�#�����B����z��9����C�7eeeHJJ���9�eFUU~~~prr���/����q�F\�p���Cyy9V�Z�uL"cT�B!
������c111hll���;����47U5j������|���7n����;***�e��#���B��ijj������p��y���c��������c����}�{���q�233���SSS������C��};���Q�K!�(�,X���BDDD���������������r�������K� 
1a�!::[�n��v��K!�(�u��!""��]���
�
�3f�����h�BCC&L��N�:!""III=z4�9���Gs�H��B��8v�V�X���D������vvv�������TUU���������8w�f����7o���q�H��B��������	GGG�7;v��������u�V�����
���/��[���7����HLLT������B��������#�M��u��a������G\\��]x�6rss1x�`9rnnn=z4x<��F��
]B!D�-Z�����t�.]�$%%�[�n\Gk�"##�`�$''�m�����?1e���)�B�B�c			�>}:RSS����`��}�8q"��������� 663g�DFF:w��u4�LT�B!r�������������������m���&W1|�p�;_|�|||��S'�����h����%�B���_���h\�r��7�|���T�o���hr';;�}�6���amm�3g������h���%�B�PAA������t��
VVV8r�\]]��&���Y�{��!::���8p������&��
]B!D��5FFF��};.\����#,,��XrM(���;v����'�e��a���\G#��
]B!D����������(**��#����.]�pM�EFF��O>AVV��?��?�������R�:!�B�N@@���CCC|��WX�t)�R2q�D���"88���h��="""��E���B!r��?�������PWW��������h
���3X�|9���p��1|��7HII��
��:b�B���};���aff��[���?�"W���---���c��hll��s���E���B!r���&&&������.lll�����)�_~�~~~��>��������8q����[�]B!DN�;w������:OOO*red��)���@bb"f���.�����X�-Q�K!�����`��3
___n)0��5!!!044����q��Q�c��DS!�9PVV��]�"''>���SQPP@�^�Pzz:���QTT�'N`��]�q����[�]B!D�<y������BBB0s�L*re�����w���g1q�D�����\�"o�
]B!D���b��Q`���������:�R�����'��cG6�/_�:yT�B!r >>�hllD������\]]�������6y+T�B!�\FF�����_?���b��t��bgg���dffB ������B!�������qqq���\GR***pqqAll,���P__���,�c�7D�.!���%&&����1$$$P���������GGGZyA�P�K!��r������7?~���ZXYYq�U������_�����#55��wo��#m�@!���������BVV,--e6?7##W�^Eii)JKK�e�t��Q&}�Bqq�L����x����������g�J�"4�K!��bEEE���C��]���	�'��jkkQ\\���|���hhh�Y_�����������`ll�.]�D"����<y������A[[yyy��x���lv��eP�K!��bYYY���TUU���%�Bw����a��+�>�I,������/���allccc��������m�Z������x����H$�J�D�h�!�������������3f��������i���BFF�������:�������7o���


����W/���������������[7��Md�
]B!�������6���zzz'j]��i������������'O�q�F|���PWW�Z?zzzx��9@KK���Rk��M] �BZ���*hjj���%_�?�����<?��6m���?���=C����~�z<{�L*}ijj������I�F#��BH+V]]-9����WZ����[�n���}����I���9B����HNNFmm-lmm1a�t�����g��Aii)�={�����w������������
GGG>��y��N�:���L������3f����*����X�l�n��+V <<eee8p����������Zl�����'MMM��������4�K!��b-n�Y�>y�S�L�����]�b��EPSS�����������y�&�������M�6a��������1cp��A�������~~~�����E�PXX�>����c��_�����������k���K�>}nnn(//�;%%%X�r%��i�'O����'����#;;R�}���|�]B!����C�^��9jjj0|�p�������PSSL�4	����_������;w�����d������gO�������6mtuu�v�Z���a��Y��u+���{{{.�������c��U�����w��mL�>��=�M�������aaa������m��|�JJJ���S������c�����}�k����.!���������iv�k��Avv6V�^-)r_011��^���B$�v���={����/�\���ill,)r_���Amm-rrr^��`��k�}��K�;u���c�b������dX�d	����?���	�B��mB��:u�I?D���%�BZ���2���������*�k��M�W�	�B\�x�����d���=JJJ�������~�����E����n�={���d����1�P��?SSS���������LLL`gg���n&�(P>��B!����@AA��
���?P\\##������{� ����]/
���$�7����uj��1�$_����������^��u���4e�%�j�4�-*t	!��V�����(t_�-.���F_��������ccc����n����H[UU�d=c*t�M] �BZ1mmm��W==�f�������A(�������:�����b:�?]��&x<444���CI��w�������*--���.�����G����B�Bi�����������fgg7���+WB$���s����b����m����e�PXX����W�#��A�a��a��MEE�W�Fyy9��9�����9%%%����������%��� �%#��u�B�Bi�x<rss!���������6-Z�1c���/�Dqq�K?���GJJ
�RLn�������QYY)�����K!�,���T��M�x��_���k����k���������0���o������-��[ZZ�����j��v�!�BZT���������c��E��~��ljjB@@"""0a�"11��
CTT��9CCC:'N��<���_}����0l�0���">>������`hh��i���GVV�����}{�����o�AYY���;���@$ACC���8}��dJ�H$B@@BBB���kkk$%%�w��X�v�kW�����b���A(����|�2�;�b��wG�.!���999a��uppp�\�Qd�!;;������F������X}}}�����&�1������666���+M���
�����d$���+�+W����:�l���9���U�Btt4���������B�F����������COO�������T�n��
x<�K�lll��y={��J���G������sG��NOO����y���9�o������#R��	!�p���	W�\��|���q�H�������C$���:t(����B�-�?^��'��
>��+W�����
�&�p��U��u�;wF�����E��o(**
w��Q��	!�p������HJJ��G||<D"����������sss�����m�I���stq��e�������F�B^^<<<`ff���<9r�|�
���[�����������c8{�,.\����z���������/=���������g����3|����D8t����������;�u��B�@ @\\��]}}}��u��Z��K��������|�q"�6�zD���aaaX�r%�l��;v����~�)�<y��{�khhH>�!''999x���+m��5����w�}�������S�N�|�X,y\MM
rss�}�vl���=��+0`��^�Z2��m�'���\]]%S��N��#G�p�H9���a������Dbb"�����***���{���+?���b���/m���g��3g�����,�������!!!|�9/��;w.+..f����O�>l��o�?!��U]]�455Ynn.KMMezzz�����X
��������566�0�@�u$���vD����hll����_������������{}��}�jLN���kjjj���:t@JJ
������BQ\������Dhh(lmm��kW�HY�BBB0k�,�m�!!!���R�B�[�n2d���Kt�������PXXooo������TWW�o����������aJJ
~��7�����yV�B����/�����������������#))	S�L�:yKJ[���S�������"���O�����gO�[��oW__���@���a������DYY�?o��OZ����B����+������\�t	<�:�B
		���9������������\�"oI�]CCC:t�������W_}l�����ddd���R���'O`gg�o��[�nETT���KL�:�_�z�[��B!�MEEs�����;ahh�9s�`��m\�R8MMM��u�P__��{�b���\�"�@i����]����c]]]�~�z����������6�=���B���/FFFBBB^�M���:����J����	!�(����#::YYYX�z5BCCQPP�u,�r��Q������AAA055���:yJ[�644 ,,��"TMM
�'O~e�������N����������\���m�b��/=7==$m�={���o��M�'������1o�<�k���1cv���u,�����?6l�����{l����X�)m��������^�~��Uxyy��m��!PQQ����%�


`bb"�~����DHMM}��AAA4h?~����^<��������I��B��������|�]�?���������������i��!44;v,���;R�����:^�����@qq1RRR���_���+V�@�6m$����3tuu�c���� <<S�N�����1nnn�����; �������@��3#G��?��s����������9sp��9�k�W�\����Q__{{�W��I��B����
q��e��;���

������&����0i�$<x�������e�z��cm��./ ����s���������@��=��]�|^yy9233��W/t�����y��rrr���+++����B!D"Q���I��B_ii)����A�����}�-���1�B!>���7#&&			/
|����.!�"�~��G������8w��,Y���hhhpM���u���HKKCcc#��������h���B�B�Sb�NNN����'�|�)S��}��8r����Juu5�l�2,\�������-�����F��
]B!D���s�F�BRRttt`gg��7b���\G��f�B]]"""p��1|��g������:��H3Q�K!���
6����v������#G���+�����Z�����������wQ^^;vnnn\G#R@�.!�"�����������c����m���p��uZo�HNN��Gtt4��C�b��	��q#����P�K!�(���b���a��=����������#DGG�C�\�ku~��w8;;������y��l�2���"&&���\�#RB�.!�� .^�ooo$$$������~��*�����C���y��n�::t��9���ccc��)R�;����������A!DI�5
�7o���;?~�'N���.|�������c�����;��[��g��D�wq IDAT�O>��3g��U@T���������#�cBQ"�/�|���G����N�����1g�466r�S���pww���5q��
��5���8p ���P�K!�(���7c��Q7n��o�+W�����2e
jjj������<899a���FFF<<<�k�.���s����B���c������!��Xwww���s�E��{NNN�4i����@�M�6�����xD���%�B���*������ggg#22�z�������"���!�e��������9r$�n��E�q��X[�B!D6��i�������NNN8�<<����=k��������M��J]mm-�/_���h�9sC������t�R���a��1\G$-�
]B!D�}���������?����c����u�~��GpSj����Y�f�g���w�����i�&�����p�
�uD�Bh�!��,X�.��/�����ann���D������a���hjj�:f��B�Y�|>�1N�:���J:����s��J�
]B!DI4�o���'O0h� ���8}�4~��'47o��:�;���B���������T,_�'O����=�������{\�$-�
]B!D�t��QQQ������#������#99�f����;f��������+�N�:�A�a�����?"""S�L��%K��;wBMM����T�B!J�M�6����������dXZZ"22+W�Dnn.���1b��9�U�� ��X��g���������]�v�O�>���32220r�H��Q�K!�(�=z���s��g>��S�?yyy��q#���0b�L�0666@qq1�y333����^�za��uX�r%<x�%K��������BBBp��%��������%��B�BQr&L@ZZ
���Gc��a�s���_�?��HJJ���<<<p��a�H���4l����!C����}��!%%^^^8q�lmm�q�F�_��n����C�d#�_��:��7nf���Y�fq�By#�����w/���{XYYa��E���@�PRR���0�:u
��_����|>���333����s����������7���8�D"��|L�>���G����S���a��]�������1y�d����y�2D�.!�yU[[���AAAx���M�8;;�M�6�����7���x��������x<,,,���MMMhhhH�UTT���B����(..FVV������ccc0�|>}�����
���p��i�������pss����c�*�
/�tP�+CT�BQ���GHHD"���  ��K�����������l�������������P(DUU������
uuuhhh�������������������4���J�������s������
"g���!*t	!�(�X�[�n�������������{w8;;���������
��wG��o~����Z��nVV����+W�@$a��9r$z��)��#��
]�B�B�"{1}�������FFF���Q]]
���IFn544����P���r�����r<z������x������5�����O�wK���?nB!��E�������_�^RR���BTTTH�-TVV���;v���455���mmm�������QdT�B!D�```�uBh]B!��^]]�9�u�d��%�B��m���g�FLL�Q��B�B!2u��Q9r����������D��R�?o�x��M����`"B!�[AAAX�bv���:���|>III\G#J�
])���G��}�����Zxyy����#�BZ���� !!<����c���3f�.]�����EF�.H���?����q��������������W/������8%!�"{����6m�M��: ##C�3OOO<�N������F�@qq1�



���`��A��w/�1BQZ�s�!�FSd����O�Fvv6��k�~���\B!��FSd���?�������~��B!D:��!ooo�#B!�(-��@!�B]����=CVV��_yy9�?���j�B�B���.������MMMt��
�����x���D���9��U__�H�aAA���UWW����`�I����ttt�����+++t����]Qj������Bvv6���PUU%9~B����h��-455���-�[������,--annUUU�wEiUVVJ�aff&�>}���
�kiee%@KKK�����ccc�1������&�{��D"���������,������Jr�***PSS���C[[������z�=�����]!
�
�7����[�n!..����w����$o�<�;w�������c�����uEE���%o�EEE033���#�|>,,,8�[�������8������������������LR���CGG��k!�x����z�CNNN444��_?��|��|<jjj��b������W���������x<�����k�b��7���
�������@vv6���aii�a�����c��000�xo�X,FJJ��o���;x��)���$���^$��������Ayy9���������l����K�.8p �|>lmm�b`)..��k���������Csss���������������B���K���=1;;***�����#���1t�P���s��DNQ��?<������'q��5J�Q���7�B���*dffJ���\�]]]�������**4��]��b���#,,111(--��a� 0l�0XYYAKK�Y}�D"<|��o�������'N��3���+�=RN���8|�0��;�;w����F����o_t����}�������HHH@ll,n��KKK�=�g�F��}��'�����N��/�����x���I���!C��W�f�����Cvv6n�����X����|>�O��q����fJJJBhh(.\������@ ��#`cc}}�f��CAA~��7���"..YYYppp��	0s�L�%o�
���D���Fpp0��='''xyy���
fff-�RR��?�������f����/���e������DHH>UUU��=c�����C���QPP���/�����z�*��___�3�Fz�PUU"""���o���S�L������f�&�B!~��W�>}���055���/f��	ccc���c�v������/��������F�j��3����p�����"??3f����e���x��BCC���x{{c��	prr����������#""g�����|}}1y�d�%���cUUUl��m�������0VXX�i&�X��]��>��c����\\\Xtt4��Z�K�.1>�����������+W�X,�4��G��w�}��������X@@����4Sk���O>��ijj�#F�����
N3�����'O�I�&�N�:1ooo����i��������������u����[��eddp�������W���{�������3�H�u�V+99�M�:�u���M�6�EEE���N3�������3ggg����>��3VTT�i&��)}�[VV�6m��������;KHH�:�k����~��������'N���&�c�
b���:u�
<�u�������	�B�c���k���1c������/Yii)��Z���\��G1


6o�<����u��*..fk��e���������y��H�Fmm-��{7���;���g��o��S"�������}��=z�������z�c����+;v��u���g\Gz���4����444���������DZ!�-t��m�����4i�}�6���HCC;x� ���d���cW�^�:�n����z���8 7oVIIIl���LKK�p>J����2�p�B�����.]�������F����������>���`���;��8�LLL����X,f�O�f�f��uc\G�Tvv6=z4322b���rs����?������E)�+W��>}�������$����H�����������s���O�����={������������������w���#���fqqq\�iQb����������y{{�G�q��TVV�O?��iii��������q�Eedd0>��z�����?�u�wv��Ifff�F��<x�u�USS����K������_�j�������'2�u�J(U�[VV����������}�Z�)��U\\,������\�iAAA�s������=y���8�&���X�������[�iBi���d...��������HEjj�d������#s���l���LKK�������Z�#5�P(|i���$s/^d=z�`nnn,33��8Rq��faa�\]]Ynn.�q����MLLd��wg3g�T����W��^�z�i��)�i���J����,,,��x�����e��uc���+�qd&$$�����M�6��T�7�b�ZWW�������������F��rrr��#u����
:�pG&��5k���>;r��q������[������_~���8�C
_���b�����iii����?\��������q��q�*--�Y[[��'���2���Tpp0���f7nT��/����e��1SSS��[���C6d�6b�����ON�<����������<c�7nd,**��8RUXX����������x���1����jjj��C8���nUU���d�{�f���\�i1?��#���f����:�T<x�ikk���@������t��O6n�8�� ����e666l��q�����8-����-]��+Da/���e������L7yg��el��5�/U(
111�����Z�Ji.�}��	ssscP�z����-))a�
b�&Mb���\�iq����������q�Y���+fll,7�bHSMM
�>}:���g���\�ygw��e]�ta~~~
Q(����p����"##���������)S����R�YZXX�����f��-�����G���;y�$�QZ\SS[�f
���+KOO�:iA
Y�>z��������3G).&�'>d<���;W�~b���Z��������T[�X,f+W�d���ry%x||<���c{���:
���������o�Q�ZUU5j
;��MTUU��#G2WWW�<��{�n�����\��uN2}}}v��5����p�nzz:355e_|��R�����O������S�f$������9����_)G�^g����K�.ru7�S�N1v��q���
�������m����(o��������yyy)��������M�4�
<X�n������{�=�����9r������rx��)T�����LMM��������TUU16k��V_���b6w�\�����?�u�Ve����K�.rq�HLL���a���\GiUrrr���)��k�Q�Uee%8p ���������D����gNNNr�����~��w�Nw
�����3��?O�7�)t�={�z���6l��u�V��������E�q�Z�z5���������e�faa��G���7���G#�� --�����C�q����3www6q�D�^Y�]�D"6y�d6n��V=-,$$�*�����������w��BdH!
]�P�����G}�u�V�����������s��~��fjj*7����'�|��������������fll�8�u�V-11������[�655����3>��twy{555l��a��L��3g���.�s��QZ��{�2����u"#r_���b����&O�L#o ;;��c��q�%'O�d,##��(���Bd��1�������Y�=X@@�Q�BTT���muW��^�������W-��������M�6q�%���c:::���K\G�6l`��������(D�����m������R�E||<���i5�����Y�������"7jkk���]�������M�>��re���������~�;w�����|������tuu[MQYUU�����j�����l��I�����(D����u����b����:�����c}����N1


����}�����G���LOO�U,�z�����O��g�>��C�����Bf`` ���r��_~aFFF����\Ga>>>l��	�r:EkV^^���������B�Ln]���y������#��%K8��b�
�����/�h�������)�w�������KNN�,�<+--e��uc����ehlld������>�,��[�p!����N���?���]���n��I�g
�
c�A����hjj������"��<y�~��!44nnn-�BB�N��{������k����y�P[[��������vvvX�x1-Z���+��W����iii���K��������H\�zjjj-��"�����!C��`���-�~~>�����/b��A-��������[�nAUU��8D
����v�&N����pG��������o��������X�"����X�t)����b�*���rXYY���#puum�����q��I��q***-���Y�`�������o�����G���[�oEs��m�5
iii011i��'N��=z����o�~MSS��`���\�!R w���i��%�����#�c9r$��[�b�����HLL�I
���RXX�>}�P�$%/>����A �X�T I���������X�����;w.233����b�*�X���99�B�K�
�o��T IQZZ���p��=������R\\���d��2x��e��QX�vm��9i�$���c���-��2

���?RRRZ�H�WVV���{�����Z���b����>}���S}�����u�LrU��������
$���O����9m������K�})����c������������xyy!++ZZZ2�K�0����///���ljj���56m�///���l~��'���IIIh���L����GLLbbbd���)--��Ctt4�u�rU�n��iii����:��)--���n��
KKK�������_�~���j�9l��������e����#1f��\�R*�UUU����(--Eii)<==1x�`��-oybbb0w�\����]�v2�'<<�7o�����rv����kjjB����c��7Nf�������:t���QV�7o��{�p��	���f��s�B�{����5k�������1o�<|���2���o�����OE��l��{��Ayy����}�6�����>�Hjm655��������u+233�����qssC�n�dz��1�o��_|������1����X�j�l�"�~������{S�+#��/G||<RSS��B���W4{7l��1\�Ph�?f���2�+RQQ����{�����'��e�\�����Y&��-���>}�YXX�l}iY�O��O


�[�n����2k���������}��5k���3gr�4�\��666b��-�*�2���f���;v���;v`��)����L�'Z�~=v�����:���������-���K��	���?���2������b��5h������c�'555|�������I����066n�%���+���<���w$���s����ggg��(�%K� $$���RmW$!88�n*�`nn���OK����^^^����z����i�,��?�,��<x�����5K�m����3��_�����vPP.\(�v��

1i�$Z}A��E��9s�pC)���������Rm�����������T�%����#�u<�b1�9��K^o���z�*=z$�v���1m�4t��I���Wiiia��	R�ka~~>���1y�d��K^���)��k��_H�������������s'�Q���?jOOO��IVZ���>��s���H*m^�|�������T�{�.]��k���cG8::b����}cg����P__}}}xxx�c���N�A IDATD\�|uuu�����Q�������5;�4���b��1��U���&c���

�J{oB��!�����U������C�0i�$hjjJ�M��p��
899q��-n���={����GsC�<~��u���={�L*�UTT0


VPP �����0a��s������a�6m�Z{����� �a�v��!VTT�.\��:u����_���y{{�-[����Z�c��_g&&&l��y������n���-[�����0��D,88�������D������Hfcc#���������+�i�c����Ffll�n��-�6y<�x����#�n���l��\� ����#G�dAAA\�P:�����H����p6l�0��E�\hh(>|�T��DL[[�eeeI����(���gw��y�g����c��������YYY����K�CBB(�VQQ������'O^���������#M���L[[����H��e����?�\*m�:��Z�d	[�v�T�JIIa���L$I�=�f��������\G!o�U��mhh��������u�������8��KWs���
������iv[III������D�������/m���Amm-rrr^���{��o����%�����S�/<�������+}zxx@OO��y��]�vpqqAll�T�k��E:��O���|>���Ri������C,#==��(�-��B������(���ol�."�JG�����`���(*j46�1*j������}[L�b��"v���"JG�I���?����;�p_�xr2�s��;��3wny��tuu��}{�Cir\\\���dPP�X�|giii������kpY��Y���{�m��������������8p�����={��O���������������===����8x� ���CC��#l���BI�RSS+�>����~�����'���S��


�����b�BFF����M'#>���/4wlmm���G�~��A���III�����"c����E(I����***U��JF>b��]puu��1cp��ydff([!�K���?~<>|��C�a��)000���K�U]�x����
�'88={������"�;��u[XX $$�A����"$$�5pDX7��xIt��]����
��i@@z��-q��7...
>�����{���~���aee����c��
�x�"|||0b��J_�����G�"++7o����k��sgl��{��s�5�������L%�����C@87������������#88<��P�:��D7""����!;;;DDD4�������!;;;<}��A���X(**BOOO��	���3	???��EII���������C�4O������?�-[�g�����g��k��!##[[��>}*����~�����'OT�M����x<��y�u(LHl��������j�C���<=z[�n���Kq���C9ccc���4����h)������0a�H�n��������X�2$����@VV����^�Z�X����HII��S�*$Prrr����$vBx###�|MLL��p5�s��������������Mt���`dd$1#KKKK����S�Na��
x��%�!����1���TW��nL$��%%%E�-���
�0GEE�-A�����������
l���'JJJ���s��G�A�=���{e���k�7o�`��-��}�6F���xD������T����������"99�A�X��=ccc��J�Mt%��������uu���z�*BCC�Z���������z_TT����MI���nL��i������s���h��-ttt�=�]�~=��;'��LLLta�w111���+����������q��u��������������~������c���>|8|}}q��A��������-[������{���-Z������������{����C����acc�)S�48Qh��ktt4

!++��0�9�^�V���C�����q�t2�c�����%�cbb8I�j����{���g��b��M�6���E\\,--�|��W����^�hgQ)�1���#����Z���k�����38r���m��m�">>�������^�ccc1r�H��S===\�v����r���.^����t���A^^&L��� --
%%%PVVFQQ���---|��	QQQPPP���'Z�h!�xD������ "�����xq\O�9�Y�w�����FII	���9�]LMM���7������t,X�%%%8z�(������


����������@FF�����,'&&"$$��o������rssq��%ddd ==���055EPP��������e���011App0�a0u �-��������:�q��N�������KD'''V�?--��sX��	W7-&&&��������q�F���O�<��_���G����5j�������u����_�~I8�����{{{XXX�$�l�Veeee0hii(��������$I�������*������q��<��C�P�w���			�����#���1D-??�^����[�f�$%%a��������E����	�l����x���o��������e��� 66��������]R����oV�\���(xyy!11�'O���5��_~�����%---��8F:Hl����EEE���/^�X����b�}����������}{��sss�9������Y�f!>>O�<���1e�(((����!XXX`���(((�tNN��cb�FVV�Z���<���#$$���&�]�5}�t��+VT���s�������c��___������������������,�P���V�\�1c�lWUU��%K�]7l����'c���h��-l��?~��AM���<�uA�?�III���GTT���`cc�Q�F�y0\]�)((��s����t���b��Q����������X�~=���G�cUUU���QM_�]�v�w��022���~+��%H�+))��C�����Z�
���HOO���>�N�����CCCC(��t�����c�����Y�'�?�L�����m�
�Z�h�#G�������055�����YK �j�..[�NNN��q#����IJ�O�V�������g��Ux]u���2���)[��m+]�9  qqq����W���]��Zt�={vvv������;����.���YYY")'""666�q�.\???L�0^^^��?���wPPP���������!..III���Q���C��x�"����o�>�}�H���.]����1u�T,Y����j����p��	,X�^^^����j�����'O��������	oo�
sg^�~s����3��?�������������������77�P���PRR�a��!;;�����!??���H���c������������
\��S2�tp��e9r�-XN��aM
-���?��r����DW�Hl�nnn�X�����pww�����p�������s��X�n|}}�ZNZZ\]]acc�#G�����deea��iptt���#>��K�.�����W_}%�O�z����}�6�_�^�������/�����������Ca/7:v�X���a��-h������#F`��A8p�@�.�_z��!�O�����c��U���Epp0��~�	�&M�pLDD����={b��uh��"##1i�$L�8��M2iiiPRRP�*Trr2�o��������~<������_W�:DEE���7n������������l,S5EEE�������N�:a���X�r%.\@|�S�z���x��U�����;���Fpp0��i#q�PSSSdes�\sMPXX���b�~�����DWVV�����0}�t�h�S�N���M2{������kL<�R�����������V__�|�
���#�7'%%%���E�n��}����������5o����
�S�N����?(����6m���'���0k����������c��?~<��A�```SSS(**
�DP���r�In��_��)�Ar%%%����������0���@WW�]nJKKE:5S���XYYU��x<�:u
������7����L�������Tc�����������?�����$e�{q+))���L�}��Hb��=km���#<<��� "���	�o��=������X�D�u-����P!yl���P�O������U�r��]�p��-<x�@`�EEE�������K
;99(K(�����1%%%��|```�>}�`���pss�'
�y�5k�H��������r��0>>���X�|9�O�����uk���"77��Y*�2999pqq���E���������ADD����8��L�rss��]�j��W�^����q��8::��K�#��Z;��yB��?��S7F�$6����|����]����,]�T�����}����PWW��\IPS_�+W�`����s�N����Cyyy<}�T ���x��b��x����������{��	mll��w��[fr���];�k����W��s��������$�\y����.����tW�Z�7o������������add$&L�������DWUU*m�.��u7����A�L�5�D�|����&6l� �rddd ##����zO��]uuuE�,���^�`����U��-����B�������G���agg��[��"""j��Z����������������}�`eeUi�������w���a���x��e�#�D��S;999��m]�|9�/_^!�$�f����������h��%�����;w���Pa>ZIY��:,��>��.�D���


HHH�������[���
�t����?Wy�(((�����?�����0T7������?�����WTT��krr2����~�zl��/^���F�!�:j3�����VIII��E��4Z���>>>U�WRRbI�


P\\\�y��x��}{��B����OM�E777�����STTD^^^��
����c0{������,Y7778p���khh���W�\���7�=�%K����'���L�0NNNx���D-�\��J�Mt��o��o����f��a��E�����K�*}��1cj\�����?@Y�Z�Y�f	�Y�����g����l�JA����[���U�OFF?��S����Ca%3g�Ddd$���`gg����A6AAA��ZXX�U�V���C��)��(��QX7/�����*�!|��W011�r����Xn����}����U������ve4q\O����]�6mZ�O��������w���*�j�������x��=222����7n`��)U3r�H���a��q055��U��z�j�;���x���\�sss\�v
			�������q��u���b���q�RRR����7o� 88���go��A���9����Mt���%K����	K�,�p9u�5�'P�mm�K93f����C�v�Z�x�B��7o�����@����=�5k�{�����}�V��:��GD������N���!###�9CBB ++�~��	l����_���/�i��/���b��9HLLDxxx��<W�^E�=����E����all\�����%������K�.���Y�.**���P�S�z
�.���(
������+z���_�YOOVVV�����M]��s��������k9YYY`��Mpuu������SSSl�����{���������v���7n`���077�u9@YK���?�o��A�a��a044��W�����-[��hbb�m�����������cE>�3::��VJFF����p��=q��e<���z9r=z���������	�����}k����[�0s�L\�v��r@D�={6x<�;&0���3p���]��F��]��*�y'a$I_�d	Saa!._����|<~�"�G�5�����III7k}\�z���Ou�Aff&�����S�z�Q~�2`�!F��ETT��4����!I�T�����������/�8�z�
yyy077o�<yu)���]�v�6y���BTT

��<lu<�+W������.���������jp<����<y2"""0w�\��������4i��
���F�	www��I������n�
UU�*����(���v�Z\�x���PUUEpp0����{�n���_*�'�u��
7/>>>�LGS\\yyy|�����&��q���rte����������<y2LLL�@�G�����KKK!F&~>>>������i�{��a�������w�W�Fjj*v��-����055�����f$��&�@�������w������h��E���]�r%222�k�.��������8�������?_c^^JJJ��w�����+��������+����E�"##��o��TNLL���>~��&I�H����x���$
8'N��VvvvX�r��%����p���z�q�����B������"(**"))I,�M�pHl]��o��;w����}�v�����(�������aaa!�x���}�^y�KK�:-���Kt����I�o��
�����DDD)*�.�����={6���p=�x�"?~�u�"�����<xP��0��<|�;vdI����>�����7n`���\���dgg#""���X}999!**
��������� 8;;7��~��!((666B��Lii)���o���#==nnn�D 77�.]BFF������SSS���{h��9��o_�2�{\���$���#**
rrr�����Q��-�����y�&?����G����<<<��w~��]6�����3f��!��*����������t����
�e 77�/_FFF222����?���		���8q"�?k||<N�<�����#~��������@,�x��������AGG�����9����uLIt����3���$j}�����[����/q[_m�����
n��%����""��\�]&����_���C���X���������oV�\���(xyy!11�'O���55�/��88{�,��������;w���.\���+���|�z�
[�n��5k�����������-����P?#@x?�x����fA������O���b��U��u+:w��������������~�
>>>��999�����u��z�j��Rx����������
�G�c\\>~�(�E
!*����p��I8]]]
�:�&g������-��~���9s�P�bj���g���N���
.���7���@EEEB�L���g	������'N����������?�n�����|��G��Y�f�m�6��������6-X�@`���	������BdaaA��O����I�=����B)�����?.���������<<x�����X����3g�l?|�0 __�
���7���;w*�+��/]�Ti,�z���G��JY'O�$ggg����^^^�j��������#�n���^�\��uM���W�\���\]]q���\5�1�z�*\]]��O�C�h���H�xV������m[�5������[���O��-Z`����m��
���{�
,�Q�����"�����U+<{�{����[����T<{����uU�]�3f����F������}�����3���G����8�l	�����(�����<x �y2�###���d�O����G���c\���<z�YYYf�/GGG�l.V�r������G����B+�.�w�^a[m�k��q���G�N�@D������}{���W�:���
��S������.D�<<<���/������p��u���U����� --
w���o� MI=�����v����{������^�z��?�JyL����I��%M�DF����O

��	�������W��"��Y�f3f����
1y��)��{�A�	���������v�����M��{RP���?������k+}�9�v� IDAT��K+]r��UE����/Zy��������s�0~����W��V�	pXX�H�������o�����Z����8t�P���2����'\�|���\�����'�����$�%��WRR�?��W�^j����G�>}�c��jU3�Q�� �����fff���oT-m��P��l���N��r^���H���a���B-���~~~BItk��^\\,�Za���������G???��5K�e�1�g�������sg���T����g��3�0�C��.e�S�N�����������WO233C���q�����TTRR�S�N�d����7��D���PPP@BB?)����B1G;v���h���P�uww����+}�_Wh��>|�P�k������o�nN����:��� 11Q"�cll,^�|�o��F�������o�����P�e*w��1�\O���D���8z�(��4z���+�O�.���O���[���l���:u
���
^`�2x��^�x!�����Y3,Z�YYY�t�R��3f����SNN8�i��	�leee���c���
.KVVs��Abb"���+���x�z�*z��GGG�vUUU�t��'O���KJ�@���?��eggCYYY"����[1n�8��fO�6
{��EAA���f�Ohh(^�|�#Fp
SOR��e}�6n�����Ci�������hL�4I$�O�0���gs@�����M��l�2������������pu>}��ln��*4U�����*[����-Y�NNNX�d	��{'��S�N���@�gy�h����{��G�.����K�����BI���Y��={b�����(KTg��
��c��	t055E��-/P��s������foo�f��	l}��-��k@��crr2N�8��
�l�lYh:tH$�3e��[�y��U;S#�8���Nx<Y[[}H��8��l�"�:�o�N..."��);s����
e���������"EGG7����$8p ������������+���oi����cGRSS#rss���P�v����������Q��o�����]�������i���dllLS�L�m����q�h��u�����(44����HGG�����}�����J���{�?�r���C�o�Z��qww�_~�E(e���YYY��9sh����o_9r$���Tz��3g�c���x�b����G����|�r��a EEErtt���r;v� ����h���t��Y���r���O�&MZy��~�:���Qaa�H�i�^�|I***����u(L�I�����V�Z�/^�dz��,<<@||<EVO~~>:u�������� ����7o��'�z������<<xP��p���W�������H*Uf���8����|<}�}��EBB���/#"�z�
���077��/.P��<**
������D�-������t���C]]�����CC�j����<fdd�K�.x�����DZW�^�0y�dL�<Y��4E���K��x0�A����Rt��
,��������������[��m��.\@HHdddD^_Sq��q�]�/^���pUy�����q��XXX��������011�����6�uu���[`��-"��)���Bnn�Xn^�|��OGdd${�.D���8p bbb���b$�T%�����QQQ��OH�?�U�V����
Z������`ii�E�a���"��)����������R��u�p��Uv�"D3g�Dff&N�:%����}��}��uK��]XX\]]������[�a������7oK}���������9s�p�@R�����c����}��q�����LMMq��A�%Hp��-�1�����Ef�����T���b������w���7&L� �z+.$�l0�����
��x<����;w���}��
�w����v�"{�����{!��c��Ie����SSS���?����:�6{�l������3b�{��1PVV���MMxx8���/�	n��	DEEA]]]�u7&<�{����;���/���oX�.]��
m��{����~Cxxx�������Gjj*LMM��gO���b��}"���7c�n���djjJ���\�"�HMM�9��������NW�^���� ??�,,,h��m��0v�X5jg�7���'KKK*..����7o����y�������XRUU��w�rR���������o��I�����a�����S);;�F�EFFF����Cc@j]�G�|�
�=��P�RJJ
������'9��������E����4i���?����E:�XM>}�DFFF�o�>�b�f���'UUU���9�c��E��G6UU=|������i��������sRVV�{��q�����%###������GIUU��@H1�Mt��233�S�Nt��a�C�*������F�f��:""�7o999q��%�N�>M������4�C���RQQ���p�C�*��cG:v���Pqq1����-Z�u(R������������Ph�����C����:����#RRR����
�����������;���� :�!�:�%*k
QVV����s��X�r%Y[[��������
�G��t�R�C�������"�E�b���dddTa��r���4d�������������A/^�:�q��������d�C����������@S�������������4r�H233cO=���'�De?�zzz��5�&��#---����:������M�:����{�������\�R������H�M�$���"[[[����:W�\!UUU


�:�w��RQQ���`�C���'����p������^�z�������>�"�%"���&333���7n� ������SRWW���'��������f���u(�***����_-�q%��U��K�.�
��������&EFFr��z��ihh���u(�JJJ"}}}��y3��H������oi�����\#�h]�G�'O�=z��*���CRUU�+W�pJ����HEE�BBB�E����+�3���g5���#�6m��H����������pJ�6o�Lzzz���[�C�8�����C��Km���C�q����x4i�$���'��F���
�>|8���RNN��H�����8q��Pj���3���Fw���:����G��A�QQQ���(55�������~b��p��RSS�t��$Z�`����na_���'CCC���_��V=zD���Rs����R���"sss��	hT�.QY���Q�����RRR��s7n� UUU���?w�)++�_��u(�������{��a�$�?gu>|�@���4n�8�H�Em������A����:�Z��x�b�
j��={���p8���j��=-^���P����G���E[�l�:�����E�#�~�Z��1���]��������s���u8����#�����^IMM�~��w�C�LRRYXX��	��YVV999�������M	�������>EGGsN�����4448[A���455i���\�R/���/u�������d����������Y���$$$���
��T5�D���U��]�vM�xii)�Z���������\�� aaa���M��/or��<x@����e��I�S~~>}�����G�&��Vvv6�9�,--���\�� ��'UUU�|%JG�%�(���Hfff4n��&�/5..�,--i���"�,44���kG�/��kvc��]������
m���I��%''���+Y[[K�b����k���%gggz��=�����#___RQQ�#G�p�P������7ihh���G,�������F��h�

"�1cp������?�@:t���j�*33��NfffMf���q+W��@�w�����9M�<��5�H�F��EEEQ������R��R��� j��yzzJU_��(..����������?~�#F���I��y��M����9s�4�I�������4h� 277�/^p��DFF���
:�����G�x<m��������h���?��9sHKK��]�&�z333��������&qC(��D�KT��t��)���C'O��:����#��3�TUU���3\�#R��7������3�R�g��!]]]�8q"���q���{������<x�u8B���+2d6���KKKi��5���B[�n����U),,�
6���2���6�'�>$}}}���o]�������+���r2_unn.�?pS� )�L�[.  �LLL�o����5������GC�������������'����������(66�L���o�7*�JKK�������A�������uH
RTTD��o'�3gN��a'{{{����D-G]_���dnnN���Mfe���\Z�b)++��+�~U����:u*�������9�>PPP@��/o�
���%�De��>>>���D���R9�^hh(9;;���A�~�_�������999��G����233i������D��-k��>���������;���s�����!���6��&5)--��{����M�8Q*o����h������I����������^�z���)]�|��p������o�Njjj4i�$JKK�:$FB4�D�\LL}������D.���8�t��4h������k�|����?����I]]�@�n��:�������7)++�7�|#�SN	���wI]]�.^�H={�$===��c���1/--���O�����'����v���uh�III�������M�4I�W~#*�rk��q���@s����Fa��xt��a���'kkk:{��D��HT6e���/�m����xL��t�[����4n�8RTT���g�����uH������K��_?����M�65�G�����C[�l!rtt$�[� **����G�������dF<W����z��A;w��o�q���|��
7x���Ot��A266&sss:~�8�����wIMM��
\��w�����s����@�����o��#���C�������#������7YRR�Y��444���M*9n�D�qqq4c�RQQ![[[��c���=~�����K���dffF;w����.���={�k�����I�g���[CZZ����z��I���4u�T�h��C����i�7$w���o�����iC���'Or��_RRBW�\��c������������J[�F�M�g�� J����B��-�v������^�����bcc����:w�Lzzz�b��&SR��'�{�&EEE?~<��q��V���\:v����Q�6mh���R?W<#z2DD`|��/^���n��	'''���...���B�f�DRoNNBBB�+W� ##�������H�l��<y�c�����SPQQ��!C���'''())��N���O�"007o���[����OOO>�[�I��&''���8r�X��222p��i?~���/������@d�%''#00����������q�����;v���w�����w���������&��������?�n��a��pqqA��=��E��[XX����#00��_���������������������W�p��q�������=uvv�����������^�
KKKxzz���***"�W������yshjjrJ���������K�/������o_���������000@��-�Tnff&bbb���(��}aaa���+\\\�������CVVVD���())�'�AAAx�����������������u*���qqq���Ftt4?~���`�h����}��W����;�^����������k}LLL���"$$���pvv���%LLL`dd��;�y��u�%))�_�x���`�~�pqq���aggW��V�\�;w�����u��)�����+W��� ��}�����=�{hddyy�:�������h�5�����{�.:v���.<m���;k:�>��k������������9���`bb�:�[ZZ���x��� **
D~~>���:�:u�;�U�V�������*��4j,�����(�������FTT������MMM(((@UU������Gqq1rss������\dee�������F�N��w���jjj\��F/++!!!�w���~���������)((@AArrr��������<���!!!����s��{w8;;������(�^�~
KKK<~�FFF�*���aaa�u�^�x���(������PUU��������-[���?~�.������FFF022�����W/�j��^����;w������UFS������ ���"&&���HLL���.ttt���%%%(((@^^D�?999��������{t����d�����������-6z����{�.������H�yl��:u���.���CYYrrr(,,Dvv6>}����\dff���W������1LLL��kW������u�y�D�i���������iI�]!���FLL233���'dgg#77���h��9�I��������sg���q:���������HLLDvv6�����O(--E�6m���eee(**BMM
���PVV�:t�s���~�6lz����������fgg#''���h��9�G�����S't��222B������s�v��-�r����DGG#--
?~Dnn.����?i*oT������Q�oL���xx��-���yyy���Bii)Z�l	EEE���@^^***022jr��KKK1~�x$$$���kPPP�:�F�%��0�0(..���;rssq���:w�dj�z�3�0�p@NN�O�����������%��0�0i��%��=��/_"<<��p�u�a�a�c%%%l�%`�.�0�0�(���0�0L��]�aD����(((�:N�9���|�Ca�iRX��0�����c����x\��)�����y3��0�4)��.�0"QTT�Z�
�G��:�EFF�����=C����a)�~��q��b-�����m�����Q�Fq�D055��	����u(�H���|������g��H-���0����������_�����H���,����prr�:�a���g�����K�.�O�>\�#uX��0��M�4	��7���E�����Bhh(�7o�u8�H��'O���FXXttt�G��D�a�
���"##���������������?r�0R�������q�[X�X]�a�*99[�laIn�7o����������;v�����-�:��Zt�a�a���w�`cc�c��a���\�#X��0�0#%^�x�j���P�Kt�a�a�F���e�a�a%��2�0�0�Kt�a�a�F�%�������9s����u(R���a�������:�a�F�%�����C��C�j��5CVV|||��a)t��}q�Db�.�0����l�����#�6m��'���3�CaF�|�����Cff&��H6��0��p�B�~�g���:�Fc��5F@@��0#e�����[����\�"QX��0L��z�
VVV���!��4�?���)�n��o����p��"���033��������u8�u]`������Y�f�$W�Z�j���7���������a)�����7b�������2S'7o�Dhh(�����Q9r$����m�6�CaF���������
�Eb�������/����pJ����s$''�����P��2��������{�`nn�u8�c�.�0�0L#r��9���CGG��P8�]�a�a�Qb}t�a�a�F�%��0�0L��]�a�a�Qb�.�H67"�0��KtFJ���OPTT������,,,����V'SQII	�������u(�H��:�Kt�����.]� ..��2����K())��+W�V����
�������N�"YYY���`��E\��0�����������EH8�1 IDAT�X��H��W�"44��}����|�2^�~��������!)444ZZZb�/%%[�l��; ###�:���X�����u���0#eLLL��uk�����P��%��D�w�RSS+���eK\�t	{���w�}W��k[��(Op���.^��F�����X�c�������Wc��y(--�:��K �v����k�"==��P��%��D��1���3�����E�z_�2$�8���0���c���"����)S���p��!�Cit���q��al���������:$���&\�%`j���C������E�X��H��/6�;AC��4���D����������m��"�������c��mX�|9>~��u8�Jqq1222��~l��	����:$���&\�%`jo���8r�H��*�u�&77�.]BFF������SSS����������\]]���8w�"""���WWWt��������p��y������]�v��a�����Mjj*n�����t���c��())���G!''~_�rIII���GTT���`cc�Q�F�y���z��ufdd ##������@@@�>}
}}}���FFF�OD�|�2�]����B���c���ppp�����[||<N�<����=z�/CUU�z�Bii)���o~Ynnn����Z_~��*�.����&((���C��������}�V��<x���|�����0`���1|�pt����:q���>}����5k�H�a�������X�~=6o��u8����.\"������xc�z�*���agg��r444+�.VL�t��c������o�>�������������}��r�JDFFb��x���N����{������9sPXX�3f�M�6�;w.���amm���OW(�������JKK�j�*l���;w����q��a��������+l��k��ARR���kkk,Z������={vvv������;����.���YYY�z�HHH��={�j�*?~�g�Faa!���{�������/�t����c�-[��������1b�L�<<������wPPP���������C\\���<�_���C������O������5�Q�sT��������1y�d�#�_~�E���7���S�����f�l��
YYYX�`���^+�Dw���8w���w�h�v���9s�pF���eK�C�@1�4����=����e����������:� �R'N� ���@������C��5��'RJJ��>333��������x�����V�'66�dee���3�7n�H��~���*(( �>}:�5�=�f����m�����#mmmZ�`A�����/�������w��u@S�L�M���T`����]�vU��6����]�t�����=Kh��}U�S��U�Q�sF�7vvv���c�}������[SVVegg���%''W(g�������m7o�$���S��a���o�N(88��P�����m�����2e
�!*FT���GEEE\�!�E�
�w�������������[��w�zzz���G^^��3PRR�Q�FU����}�����3���j�
���---�j�
��=���{���>}:Z�h��S�
���M2{��hQ���lYO����W�N���
...8x� n��������n���w���wrrP�X��j��jK-��Q�s�eYm���0[���9


���~���������+�1|�p���	l���D������P�7�0S
a�g�X�a ''�ub�����������?���B^^yyy�~�:�w�^e�bcc���`��{_}��������������p�����kh��=������(���!����@������ ///��?''���x��
?��T�����s��w���M�6�����C���������;{{{8�������vC���H����P���l��}�?F�.]��wot��Y���|�2|����~bb"BBB��&N��N�:U�������Chh(�������Q�F��������y���8�h�222(,,D�������v< yc	��X�n
TTT�����R{��x��������TXXX�}�w�����se����k+�+..���K���Te�uU~��������B������3f��?���L�v�����z����m���?���>���C�2e
�t��
�5jhh�D�9Q�S${��]�v
?��30}�t������
������>��~�
>>>��999�����u��z��JgL������
n�������&L������_m|������o���///��3��xIK�0��ZtE���x�)�h���KU�F�O�����
644�Z����G����pqqAVV.\��������'V[^}ZZ"##���[��6�7�������=���w���Gx���?�
6�}�������VVVk��mP}SUUU,Y��?:���;w��w�j��-�
�={� ''�6m�'5&L�����t�R�=Z�������;v�������
���BQQ#G����>�/_�-Z������������

����?>44������_1r�H���2>���;c��u�����������'O�����������������~�
���������6&M�$p���V�\���ll���B�iiipuu���
�9"���������i����K�.PQQ����1i�$��f��L�����������m�E�w��(���J���Sc�
b��&j4&��klh,����5�QPE�*MP�( �3�����	@�My���u<3��z����{��?CQQ������_V:C�������#11JJJ^��NNN8�|�\\��������.]�@QQ)))�|Mbb"T��>fffPUUE\\��������������������9s� ""���.K#�*l���������p��I��UW������"""�d���+���K�.EXXlll���Ui��������^X�T����\�4��
�����J�u��_}�������@����7_�3��O?��W�^��_��x�0b���9��mFGGc��	�p��O�^iMEm�'���5t\��1yyy���HLL��{�*=/�q��EXYYI��V���,/^���Lx{{��5'NDZZZ�3�m�Y\\777�h���������������������4���O�O!����v������������w�o%%%8q�D�/��5���#+M]x��16l���/_���������)bcck�M&}%%%����t����1����{����{�����U( �}h�B��%k�����
�%+�����@D8s��_�>����J�����p��i,\��������O�>��{7:w�\���~O�\K��];��1@bb"&L��
������B�rss+�ou�{�z��W�F���1g��
G5���=�b1�=Z�T~���7-Y�vvvX�d	���*<w��	�h����+�'#",^����8t�P�A�w���D�9�����`ee%i'==m��������������7%�%$$H�y�����m��6j�;���Q��������iS��^�~����Y�fa��%�:Ue��U���/���j�M&}


�={6���S�����u
@�Z�P��m_��*!!����V6777l��������]�.�^K���D"�;����2���/����1c�������}������X�n����v�Z<|����X�p!��������������#,,���1b:w�///(((����X�f
�����g�AKKW�^������%��BBB����G�A[[K�,��#G0v��J�����q�����o0`�����S'��{��aC������K�.���>Z�j��g����������e��:t��O����1o�<hjj"00��M����1h� ���c��Ahhh�6077���+V�X�����I� ++����c��i�����+��?�s��IN�o{l������ddd`��M������c���X�f
���QZZ
'''���


8�<z��Q�=1b�����_����o���8t�P�d��h�">|^^^=z��q*hLk
��)��PWW������AD������>>�+V�?��>��s��1��kj�=ys=�%h����!�%�*�_��i�������~�_�9&&�BCCI$�h�����:u���233)88����>�mZZ��u����*�\yyy���U�<�222�������&��u�;+..��p$;;�n��M�?����Z��}L��-�J_L:����]�v�����m�:u�����+=�l�2@�/_�����C	���K+--%EEEj���;�srr"���/y�C7J(++#UUU���z�g�����}�������c��7J;{��;��3f�q�F�����	��������*++�����DD$���������������{�����X��=zD�����/�Tj����lll�����}��%88�Z�hABG�u<uA�ddd`ll�O>���/�ldd��]�~�u#�����^�z��tc9]]]X[[�K�.~.�*��}---���T�n���������������:�����S'��z���aaa������/&=#G����9�n�*t�
�Z��������g��
ZZZ�~9���1��N�/X����o3w��w�������1n��
�j���o=C}XK��^�^�`ff��G�
��q��$��\�q)--����a�^����b��MHHH��vjs����*4k�����%��#{���Jk,,,��ys<{����O�>-�������o����C�f�<z���s�/_������������m���?>=z�)S�T��Nu���gz-��E�a��-5�JI}&�r���B�`�***Bbb"�=�G��m��������j�V����������}{����COO			

���^��1v�XxyyANN������`aa���h��9~~~h��9p��y:X�hBCC�������W�^�\NLNN_�5���������p��}�V����|||$w�
		��)Sp��y(((   .\@qqq�[k������	���X�h����]�vA^^^�~U��}]�t���[�|�r#<<���GPP��=[[�
�(++����w���/�����'O"55�~�)�\��������5j�7o�?����3g�<y���h;v�^����kq��]8;;�����7�����������#&&s������>}����CII	={���{���---���"--
��'F��N�:I�R��sg8p/_�DXX��]����c������@xx8���_���~333��={���sss�����wM����}�v(**BNN"�EEEX�j�������@VV�{W���-//��7����'"���"//�����366��������i\YYYx��	:u���i\"����(((�'�|$&&"==:::���yg��;w�\����dff"22&&&��^%%%������rrr	UUUKe���}�����c:J��B�1�c����3g���C�$7�i���e�1�c�O�d�1�c���1�c�Q�B�1�c�5J\�2��=z��������C�#0���q��X#���[[[DEE	�	��������QcL����5b�'O���v��%t&����c��m

�����qc
@II	��A_j���2�H���X�j��QX=0}�t(++c���BGa�5&L�����1>
��5BD�y��a���;��MVV��o�����W�^	�1�:��:�G���5B����Zoo��1n�8�n���m:
c�����A�6m�v��	�F��e��������<�A�	��3������3��sg��0����c��g��X�x��Qj��.0�������\�V�������q��%��0��I�&5��|D�1�c��UII	��it��E�8��Gtc�1��[)((`������:J�p��c�1��i��Y011:F����c�1�(�]�c�1�(q����/���;M�o���	�����q����7o"55���]^^^���:k�JJJp��Q4��lBF���1�n\�����M�������i����#t���Y����B���?�B��{7.tY�w��9���4���������C���LAA7n��E�PPP t�j�3*t�����:k����p��!;;_|��={���������=�����[�l����>}�H�?��������������������B�����|�2��������B$���#h��&L�]]�j�-�s������8u���QX#0b������y3�/_.t�#�bq�>�Mq�`����b��6�c�\�2Al��)))��a���PVV,\�VVV000@RRTUU���ooo��� &&��M�
�M�4	�:u��M�����[�na���4h���/�@ 66D||<���
6`��i<x0��?�.T�o!���`��E��q#TTT���	WWW������������Y>4F���T�3�������%K����_~�E�(UC�IYvv65k��^�xQ�����SPPP��6l�@������EEE��������;�;vT�����S����/�����t�B�g��V�B��i����X,:
kd���C'N4Cu���|F���X]�������Z�U�0�;�F%++�����o_���mm�j���m[t��}����������?�MQQ���===(**",,��G��Bjj*��[�m��AFFF�8��Y�z5.]�������������#44IIIBG������}����������o�>8���8p &L�P��TTT*�����x�����������!��KLL��9s`ee%t�iii���~���/��cc����*p��y��5K�8�Gt� ��=ggg��������9s&������R�kyc��0`&N��3g�H�-[VV���Z�hQ��A(=z���������i��a����f�1���k������:F��]&===9r;w�Dpp0���p��1�_����������}DD��muuu�x�����������^�z���1e����#''W��o���3F��3�cc���/����+QVVV���4�]&uX�d	���������K�",,666����`'O�Dbb"`��9�������d"���6����rc�7�f����#���1���enn555��{W�(��.�����8q��N�Y�f9rd���-[�I������   ��������]xx8H����Afff��~�o�X���Q��(����I�&	:�����e������M�*=~��u�?��c���������7%�%$$H�U��wo�D"<|���vnnn��������^pR�M�Q�u�P����Q�1�*�Q#�}�����a����Ar+W�\)t����y�s��8p�^�|���0�]���w��*\6KWWZZZpuuEZZ���O�=�:u0���puu�X,Fxx8v���)S����?���;q��y�����7��)Sp��y(((   .\@qq1z��Q)���f�����U����X�%C5Y���G())AVV���������H������


��.33���011���n���������Y�f^/8�Du*�C}����Wc���011�j���������+�i�&�������U��6�1�1�n\�2V���uC�Ett4ttt����(�X899a���B�a��*�B��zJ,���_�5���#t��������#�����1VO���!??�A�y�5~6668p V�Z%t��2>��X=���333���a���B�a���KKK��q]�t:c�}�e�Z�z5z���E.�W������?b���BGa��7o������1��� IDAT]�����X���7n:
c�,^�O�>���g��������s�N�c�O]`��IHH����1i�$��0�V������B��=���Xzz:��m���L(++�.tY��������c���BGa��C��]C��-ann.t�sss���vvvBG���.�F'66...B�`��S{�������1k4lmm(t���B�1�c��X��}��e�1�c�Oy�+���R	��1�c��LLL //���H��T��.c�1��1����}��BG��]�6n�8��KMM���


������TUU��Q	��	���3�u�:w�,t�jLOO���|��X���.c)))�����y��zy�m��c���puuE\\��QcL�]��u�V�h�c��:
c���S�L�/��"t���:cM���/��o����222B�a�V�\�fff��wHb�5=|D�1,Y�c��A��=���X�������+1�|���	�1���eL�������Oc���BGa����5"�G�:
cLD$t�
��eL�,--q��E�l�R�(��:yyy�8q_~���QcRCCC�cT��.cR��ys���[���KKK����1&ex��9�����"��.c�1��h��5��������"��.c�1��������:���1�c�VXXX 22R�\�2�c��Z�Gtkb
������s�X�`nn�Gtk*�b1>��3���
�1�$''����^��f��
sssdgg���D�(��e�N<xEEEppp:
c�i��-�b�
��0����������� t\�2Vgrss�|�r���B^^^�8�	j��
8~�8������kB��e
A$��5z�.�Z�
}�����.���o��m�E�a���R��*�!��X��B�5x���C��m�c��J����c��q000���,&&�����
��'c���E����3�����j�C�A�~�^�9c��uR���.tY�7|�p\�~G��7�|�X���E�>}��cG���Ju������������Xj}2V�)**b���X�h��������1y�d8::���k��w���o��nnnX�|���0��G��H������<�1:::�w���-���������{6l������*��k���1y�d��1C��^�z���C�=����[�n���+h���Ts0���]��dgg�g��HOO��9s�f�Ar���CWWW����^�zmmm���H�o///��9SSS�g`�I���	�/���K�.��c�|���������S���X�
}}}(++��]�c�1V��u��������^���1�c��*���|^�5(������Bdd$���������!??yyy���AQQ���������*���`jj
333������FFF���-���SVV����JcDVV���%�D~~>@CC***PVV������`aa!'�����U+�*��: ..N�<u��o/^���������8t�����033�����o


(++CEEZZZ������#33����������w�YYY���7���kkk4o�\���1Veeex������������C^^^�E��K���������())rrrPPP���|dee!%%��������ZZZppp����d�j�l�������C���B��;O�<��c�������X���Hv2VVV���D"$''###C�����FYY�7o555�Q]]]���U�+--
W�^��(`gg��'b���U�<Xll,x�c!**
fff|]ii)���;v�.]���������:t�P��YYYx����lO~~>


 ''���@UU���h��-%���b���I����hjjb���prr���Um�
�5^^^��{7�\�"h.tY������'O���>��Q�0q�D|��g�O||<�]����#::x��)���+�i���AAA������ANN������+())U8���G���BEE���sx{{���<�W_}ggg8::BV������"XZZb��m6l�T�3����8t��
����
�rw�����;N�8�-Z���#F��\������

��������W�$�����d��D�i������BVV$c���lmmaii	������<y'N����&���0y�d�/c�r��-L�>��w$�&.t������y�f:t}��������+(++###/^�L[x��%lmm��[7�:33�*_����qqq������

BDD�������������rrrx��)������999���/�<y2�5k&i���#pss���W��b�i���QVV����K#"�?���CLL&L�ggg|��������������~�:Z�j[[�
S�����<?77������#  rrr�#��
B���!�p��%������C���%K��k�:ykh�>}�^�z���W�!�C3f� rvv���H""�D���K������J�z�j�q�����I���4����o�������M�64o�<�{�.��b:w�����h���TXX(�>++�Nr1�����K>�eee��_�'�|B:t����SAA%%%������O>��-[���3>|�����$�X,����+
6�TTT�������K���D�zY�r%ikk����)((�N�0��������=���	��]&U�����w����*}������@DDqqq4o�<����n����-[(%%E�����4{�l���������}�������.\�@�}��i��N�8!H>�������YXX���G�����b1�9s����O���4n�8������R������C����=�����I����{D�z|[�z5�����_~IqqqR����]&b���=J-[��q��Qrr2EFF��)SHUU����z����I�����<==�������i��m���ODD���dhhH�����f�����/����&��o����H$"�����={�����8Z�likk��!C���DD���C?��#�����u�$_�c���.�s�����_?255�K�.��g�h��q���F,�����������Z�hA[�l���*((�������-]��wf�����{I[[��M�FiiiDDt��	266�.]�����D"�S�[vv6�_������������CDDaaadkkK���t��5�S2�4q������;ijj���+�������i������N?���d��PR����s���Wtt4����z��E���'d�������#G�����hhdd$�����������$�NYu����i�&��������222H,��C�HKK�V�\Y�v�#.tY�(,,�~���������DD���G���dkkKaaa'�9�XLG�!===rvv��/_�H$�������&����BGd��		!###�8q"���PAA-]��TTT��~���<�#���������������#D�zn�=�������b�1�B�����h���3
0�^�xA����r�Jj�����5�#4����FS�N�-Z�����u1��uk����Y(�XC�c�RWW��������]�v�Ptt���j���/��_~ITTTD����V�Z���W���X���.�U!!!��eKZ�z5��b���'�����O�
�N�>}�tuui��$�(%%�lllh��a�K"1�^�
Y�bH��9r�444h���_��.�����I��������������"


:y����k���e�����������CDD���C:::��?��5p����8���&JMM���|2d������������D"��1�,--)))����h����75fG�!MMM��c]�v�ttth���'c���x�B��\��Z���I���t��)"z=�kkk�����������f��E�������D4}�t�����cMZAA
6����(--�rss��/�����7�/����d``@������2z��������+���X��p����[������5����7�|�5
���.\2D�xR��ys����f����?~����������Gjj������2L�4	"����(++C�~����ooo���Qj�v��[�n�����:u*LMM��G�b��5B�c��ihh ;;[�\����)S����}������g����Z�x������v�Z���7n����[agg�a��!//O�x�I
a��YHKK���RSSakk�:u
���BG����[����x��F��V�Z���K��kv��)t<�jU}(te��M����0888`��=3f\\\p��\�r�[�:��<==��7�����|�	�����B�9s��5:cu���~����H[[[�7�����&���B�5
���8s�"""����`��B�c�V$''�������e�#��F���0h� �X�c������q��1���?\��c������1x�`������c����7�|#t4����m�p��I�?rrr4h�E������S�N!33S�NE���q��)L�:�n�:c�BCC(--,�e�&����+++l���?>�^��N�:	��Y�~=8�7n@QQ=z����K1}�t��1V'���1h� ��qFFF<x0Z�l����CV����);;�����A��a�=zK�.�������+t<�>
�Y�fHMM���� ��e�������;����?\�p���������#007n�@hh(�����s��BGc�Vedd�{��X�z5�������/^���


B��������o_�����1c�M����4�������:cEKK���C�����Z�j�����}�������<L�4	��m�"��n�
MMM,^�VVVX�|9F����\��1Vk���O���#���q��A\�v
'N��"�=�������������{7�e���1��&O�,������*KKKC�.]��`����������C�	�AHIIA����{�n|��W9r$tttp����1V+v����;w"$$			����?��+++��5��o��]�p��]�������.]B�=���X���.��i��������-[����
���PVV:Z�����1c����;PUU���N�:{{{��1�Q^�xKKK���?���@�^�0s�L,X�@�h
a��QPUU���G�m�6;v�o�������k���eU����#""������aii)t�g��%		���/����]�v���{���:c56~�x���`��]X�p!���p��9�cZM������+v���!C��g���5k���[��1� q��>H$�g���={6f���!C��W�^X�j������Bt�������1c��o_�3?���������/c��I���Drr2lmmq��}��4t���X�h�������A===��1��p��>h��m8~�8��������K����GPRR:Z�����3f 22������?�������)--E�.]���'''888`���X�d����A��g��X�f
�O�"����������`hh������u���9�����C�
��������cGl��S�N���6��f
�����c����������a�����ys��5h111���������	��{&&&BGc�A�B�����;q��)\�zk��APP������(�������?Fii)z������h�B�h�U�X,���%��]�a��������������(��� 66'O���y�PPP�������]�N���011������o_t��g��A�>}���h��5�������1~�xc��5B�b�J<==�b�
<z���p��m�c5�^����!n��uuu�������000:cUv��u�����O>�.t�;:t�v�BHH�m��������W�X����O��[7DGG###���x��455������������	`aa�-[�`��aB�jT.\������U�b�XC�����e��X�l� �����;����pqqAII	�l��#5:���1b�m�KKK����:ct��5���a���8y�$���x�~X�h��������������������X����eo���d6�������������_~�{��Eaa!�M�www�#1�AG����3����}�v,^����[Z�n��'b���066F�=���%t,��LQQEEE����.{��G�b��	PPP���G1m�4�#5Z���077���g1t�P�������B�b��
������'#::QQQ9r�����S����c�Dprr�/��A������d��e��D"xxx���	��?���71v�X�c5j�;/�=��:c�t��it��	fff8|�0������C�{�����\��1c�����HLL:c
��___����W�^pww��!CxqT?~<�^��/^���	���X,:co���'''��b;vNNNBGj�&O�www���c����e�5B_��]V����1f���euKGG��9���/���b����B�b����B\�z#G�����!//[[[�c5z�&M��3g����Q�F���G�H�U������e�������)))x��	 t�&a����t�ddd���???�#1VI`` �����eK���?6l/B��:���7n����#BBB���/t,�>�g������`�s��*HMM���Oacc�����;)�������R888���_�H�U���GGG���j,����������7n�:c���_b�������.����+���wb�e``]]]������QR�2V��������>���'t�&���Qr����e�����k������B�����:::�w����������{���_?���ZZZB�j2������0deeq��Xq��*x��!>��S���"))	VVVBGjR���p��M���~���0�1�?h��
���q��-���	�IQWWG���q��m|���x����+����������(���#22&&&h���������S�N���WHOO��!C�*oDEE���-p"���||���H8P�DMk|�7F|�����ERR��k't,��->��$�������: 22fffBG���!##'N��������c�#�SSS������fff����� **J2.��o!5���d\������)"##���X���.������������Nx}�n��X�d����x�"���#��444��E�������wb�^)�,�S/�!�@�c��_���0c��.�������i����7�z�7o�Djj�T�,�y������g|�Vo<y�Dr��y��h�����$���o~�B�5/^������]&���.�q%''��/.\�z�����������dffJ=coS>F<����B���=F�k�))) "���!==]��3V]��'�����]&���555@^^���M��s�"�~������PUUE^^��30�6999PUUEnn.�����#8!�555��b@MM��V�AQQQ����L"//*�u-99g��Edd$�5k�=z`��q�����6
q��i��s���h��-�������={�[�,�VKK}��������,tyG��"B~~��oRUUU*����P�v��!//EEE�]>V0V_	]��]&���KZ;2///���-Z����������������|��:m<x�=z����/~��'��������w�}��{�������*��iJJ
bbb�����}����.��X}PXX���2�]i|������4�1���]������G{�����2�������:�/88�dee�����������eKZ�pa�����	����Fm������}��^N������6l ����Q?gum������k""�������K����������@DD��o'gg�:��6+x�r IDAT�����P�###
		���`211�j��UW�~����3���Gt�����222������f��
��5������2d������Zk���~��W�����Vxm�0b���9�~��W�;�XYY�������]�����T�Cu�i(cD����X�X}UTT$�UQ����xxx�s^Z��'��� 77���u�#==�������d������QPP���D�J���t��������p���Z��>�����9W���QSSCii)JJJ�|�dm�5i������<>�zO��\�61HMM����+='���>�z�^�f�[_��������i#!!���������e��������27�6������XC0c�t��Q����mb6m�������?��S���,n�zG��U+@�-�~��:o�|:F~~�G�����@��m�tG���+9J���+����}H�����"\�Cu�i(cDii)�����e
���s��'�51jjj�����{�0t�P���Ux����999u����������{������k�
MMM������o}maa����<y�����7����<�a�7�,����P�v����999())I�2o�5T\�6A���2drssaii	OOO���^�x�������:��x�bdff�������8q"���j��x�#z��s�V���.qEEE�����%��+���h�����AD������&�-[�Hn���������CBBB�-H����&�4�1"!!m�����RRR���Wg}1�p�����b�����������
��a�������K��K�,����,Y����
��8q���h������#HoN��N�~�-��5k����G^{��ehjjJv\`mm
YYY��yS�XBB��i��?��EFF���QQQ011Avv6����)S��������/���q������i��djj���h�k�b���?���jc|�n;
a�( **
fffu�c���m"^�|�1c� ;;�N���G��������Kr333<}�%%%033���]�����q�����o0`�����S'��{��a�����:u*�������������[�n���e��^��;{�,�m�&)�MLL�-Z`��M�������+V�ddd`��Iuz����dee������077���

ahh���'��������cV�^����c��1u���r�_�edd`bb���(�m��N�������
c�x������7�|Sg}1�(r�^&U�?&}}}�;w.�����'O�������*��E�A7n� sss��������P�DRi���eee�}]FF��y����j���n��I���DD�x�b������Z�XL�N�"###1bD�|b��~����~�ffM��'$7S;v,���[j}���P�v��1~�x��s'������2%''�y��5d|D����������?c��y��[�b���o�GV~����O�>���������FU_�����F�����
�%����w�VFF�F����1�|����.]���	����HLL�tMP�j���L2G����?�Z��1>T���8FDDD`��HJJ���Z�n-�~k�x�n#����A�a����"���1d���n��[7��{:::044DPP���2���q��}w���R�������o�E�~�$+�]]]����wVc�������x��%�������#5)���@�^�p��t����������P:tH��l��b1&M�,\���sk��y��������ptt����ge��������#**
yyy���O�����8,[������3f`���8}�4���+,�a�c)))���
��]���-�<y��/_
�����G��=���8::
���
����S����W���FVV���������|CFF���PUU���
���a``�����*������$������v����8q"rss�������c��U5������v��}ppp���_UU��uC\\��%%%���b�����qc�r���#::��������|��S������hhh�u��066�^�Lz�����c��W�^���R�������x��x��]'b��rrr�� ��L,#,,���x��"##���BGG***���Y�f )|

������8���fff077G��}��g�}��/_���e�p��9())U+���:u����@888���	���PQQ��{�����OR�������������J���~�	!!!���p��}X[[p�g�����w��Ett4�������v���e��PWW���Ko�YYYHNNFjj*:t�SSS������
����;S�����3g�������]))/nSRRW��8cBJKK�pI>!��������x�;w����v��������K���;B^�z�+RSS���h������kx��1z��	|������4����Cii)���_��g���������aee���c���5j�U����1b���9�Z����?,--��!  �����\VV�������z�
vvv���7���`jj
33�jA���ATT������@������ptt��A���.�JJJ������$''c���������'V5O�<A�^����xyy���
�/_:c�5u�Tt��
���.��W}h����������_?RQQ��#G���;)<<�N�}��yyy���s�c����}{rqq���""JII!555z��Y������:�X,�m����a�j)={������������+W�����bq��]ZZJ����1c����2������k����TZZZ+}�MAA]�r��.]J={�$


�1c]�v��~6&�#F���[������|}}N��-[���M�FDD_~�%���
���<x0?~\�\�V����i��I���B������F999�d��@3f� 


����9s����3?��:P@@�������x���R����y3�9����L�B+V���6���i��E���G����a�JLL��vk*""��.]J�����;���k�z-gV�yyyQ�����h������,p��M,���!�����W�HEE�RRR��������._�,h.t�(00���������h��e/t�

�����w�N;v�?������j������`6l�������E�n��������OjjjU���>}J�g�&UUU�2e
����b��WVVF~~~4|�p���$JMM:����b������Pz�����Rnn�����W�R�������v��IC�:cU���O>4�L���G������l�#��X,&����i��v��Q�;	EDD������'u���O7��;w������������F�$%%���3�����9s(..�������P7n�������o��w��O?�DDDvvvt���5^������BDD�{�&�1V5�n�B�222h������E[�l����#U���}�����{w�u�V�����"www*--%CCC������l�����
������jii)m���455i���
��fTT�5�Z�jE���/U
@PP�n���������djj����e�={�����(99�>|H������/t,�.t�E,��#GHOO��J			BG�(eeet�����%''�j�">q�u������h��=dmm]�I����pRWW���4�}�6���T������K�.���������0�t\�r��������=z$t�}����{��X,�.����k����vV�"�! 	8p��f��n\��Q���>*Znl�hOG�{hEQp3D�"2e!����g��Q�H�I���.�����o��|r�{�iC��'����w�}GS�L!"���G��y�8N�0�������C������),,��8r���N~~~��ys
���TTT���-�8q�D"���RDD�b��2�F��������^�|�g�N,��y�HOO��m�F�D�1kTii)�������\�a>���3deeEb�����G�Z�R�k�k�_�������L������k�c1�Ja���w��-j�����Sqq1�q���c���G��������v��:�T*�
6P��=�����'


z��5��w�tuu?k�jjj*u�������5���="{{{4h���r���TJ����={�PEE�l���=�u,�1m�47nM�0�9N�0����R����������={��S#����c���������������]�p�JKK����8PCI����;-^�����N�-����9s�h��9T^^����+,,$___���V��#��:DvvvTQQAG�!sss��,�)>$�G��7�x��444�n��Q�����4n�8����m�P[�D"�<y2YYY���O?���;w���=����������Y�����dmmM���I������l������j���m�����s��q�Vz��E��%	�o�^6����4�����v�R)u���������S�N�8���Z[��D":t(999Qvv6�q8B�\�A"�����Y����L3f����j����LMM����$��m���}��O�&88����)..��R*���0���e�Xq **�m��������}�x<�~�����I[[[��D���;w���-�D"�t�ijjR��-�	���������������g��)�={����.T����8����/^���/�����,.L�2�LDDk��%gg�J'�H�R�9s�g���111dddD�W��:J����Ek��%����^/�7�|C���DD�d����[n�������!���QYY��|��g����

i�������uL��W�g�V�/����-**"GGG����c?��S����}rE���@:t(m���������75Q-�:u����)==�RSSIGG�bcc?�\�TJ�&M�:��HHH sss��f�����#H__�&O�,{���7dddDW�^%�HD�:u��V���D"!OOO�6m-]���w�.[W:77�IOO�BBB�
�R311�|W4�ZV����S�>}h������#N�:Ezzzt�������'sss���?�������R�U��g�HOO�.]�D��<<<h����>�����eKV�~Drr2���;��Rk�[c������w�`��?������)''�^�xAj�T�"������RLL���|�G���kdooO]�v���d�2�����S�z��b>O�)t�R)P�^������8Jk��=dddD���=M������c***"�@@?��s
�T=������"[ea��%��cG�D}�������T%���JLL�x<:v��Q�����������iCQQQTTTD�Z���s�����R)>|��5k��~����(11���������c����h��E����u�?���������6�1���3g��:(��e�|�r����t������u��$
���{���C�������C*����c����***(,,L���1�&z��q
'U=�.]b��H"�Ppp0�������e��"##i��1}Mqq1���QHH}������T��j��O����1>|����J>>>���[�n���-����}�`����W�M�6\� �ZR�:t��7o^��8����G�����
�'�TJ_�5�?��������CQQQ5S%��5���iCyyy���kj��9������MLL$]]]�v�Z
�T];w�$6^\�����O�>��ukz���{�>L.�������u���b8p yxxPYY��c����4�����k���M�����J�2%%%HFFFt��IEEe���g����?�1���������K�/_�:�J)--%�J'�dgg���
���ODD�w�^j��%$$�dL��n�:��������TPP@:t�t\nii)�o��V�XQ�)U_@@�����_���;z�(P``�G�������U�>y�w�$$$Pii)����������?���Q��me���������������Y3�9s&��byFe�*Y�|�{�U�����H$��;RPP�QT����������	A����Y��,,,�������~#CCC������2���$__�JgJ�����
L���]�q�F���4�HD'N$�t�Z��Z�hA�_����j��M�:��@o'�v���F�E��n��I���������I�����{wv����I�h���\� "5/tg���
�j���?������u< }}}:~�8�X�����+]�������S\\UTT��a�������g��'��B5<x��ttt���{\GQIiii���L�����K_U������@������N����!C���I������}{=z4�����G:$����b�7o�����7�rN�����x���Zm����6���pE�
0�f��]��w��O�>MDo�������/�TD�!�Ji��YdccC��=#�XLc���N�:U�eA(����8q�������`rttd=�Ut��]277�I�&�}}q�TJc����]�R^^���S�^�����VN~��������3I*���G�����6m�$�����K������S�e�+�J�K�.�}�����������������#[����w�����+,,��C�R�6m(--M��t�.]>9Qj�����O�L���m���	�|{��%�G�v�RX������O�Z����T�D���C�:u��/_*�]e��_Q�f�d���������~��W��K���4m�4���������};�������h�����[�ON$����f���&���q�����������k**'?~L���4l�0*,,���\���+y{{�P(��u�="mmmz��Y
�Uo�����W�<��T*�������i�,�&�Ji���diiI���TQQA���#�GG�Qx�\�J�Bzzzt��"z����#��"������
4�JJJ��(�+t�������"""���V���H T�,�;�n�M�>����)''����O���%������IWWW�+���L�Z���m�]]]i���5�V���W���H*�����I �x�jHH5k��"##������dhhH���j��Xvv6����dkgo���x<]�p��rS�~�����}	dj�+tW�X�4k������@ ���_iii��kWrtt�����T*�M�6���.�Y�Fmz�SRRh��daaA���DDt��1����e����2J��]�f���x��%ijj*�de"�i��1��C����$�������QPPI$JMM����S��)&&��L���~266���
�TXXH���dmmMqqq5�G,���������`j
�*t�B!U�S=R��Z�n-���S�b1-Y��d�����������������B���4k�,***���R�<y2}�$���{W�N1S}&L����sC��D"4h�������9����H��wo���"�XL7n$�G���*�����D�{�&kkk:w��+��eK4h���r����333�$S+�U�B���\�Pk{��!��^�����dddDS�N���|�H$�}�v200 ��*�J��������{�����C""�}�6988����g/GzzzTXX����Zrr2ijj�mQ����Rrss#ooo���PRRB�~�-����VIKK��#G������o*5�!;;����K����d�*--���rZ�z5���������(�n�:233S��`��jS��������J���XL���t����~MZZ
6��7oN{��%���#�M�F������OO�<QT�j�H$���R��m����BCCI*�Rnn.}��w���($$�J3���62��G�����������C����G�k9s���cdffF������s""�r�
u���������V���c���i��Y���M>>>���S""�z�*�j��\\\�x�3E


"sss��9���������2P�B��������u�Za��M���]��]�p�lll����?~LDo? f��M���4l�0
W\(} IDAT�%p���h��m����U�V�w�^��� �DB�v�"CCC����r�azz:5m�T���3w��]244T�q�_B*���q����E�W?)**�9s����6���O�
%.]�D={��f����+(55����'..��L�B���@���DD���k���#CCC��c����}��E������9��EII	��[��u���6�����i���\������I�&���Q��������KI[[�F�)[�!''��-[FVVVdffF����������N�<I��
#


�����G��D"!�XL���dggG�Z����:��[GC��sr�2m���mfR�H�R���������q�U���#ruu��������e����������6mJ�{�nN>L_�zEk�����[�V�x�#���J������E�&MR�/����'�e0Smw��!�c�G-
�7o�P��M�?�4`��j�����E, �G��7o����s��O�N��uk�>}:�<yRa�gh���4|�p���'{{{


��p�����={�������C���qpp�m��(^pp0���p��/&;;;�VW���W����'���SPP��P����={����ihhP�~�h���t��]��������+Wh�����LM�4���C�d��SRRh������M&LP�I^��=9::~r�o��7�����|U��*n���8w���=�u�Z����X�f
bbb�u���|������i,,,��#G���"����Gxx8�����m��]�v������@ @�-��A�m�������_III�q�JJJ��gO�����������������?����.\ooo��S���G��g��x��55j���a>����akk�W�^���q��9rS�N����aaa�u�/v��m�X����4h�������z��!55W�\��G�D"t��vvv��>�##�mG*�����HJJBbb"���c��uVVVpss�����Aqq1�?���P��yc����9s`nn^*�'�J1t�P��b�<y����:�������u�"88��(2jQ�v��S�L���/�Qj
�Hccc����e���>_YYN�>���P\�rnnn��������C�����_�����+Xsrr���



hjjB[[
6DII	���PPP���bTTT���������;�}���W��<��3g�w�^������h��]�F�?>
�y�f����<������c��R#����^�z���cpuu�:�\�x�{��Ehh(���1j�(4NNN�/�			����}�MHH@rr2�R)������d�(..Fqq1�B!������>�[[[����[�n066����8|�0�?�v�����>>>j�%����z�B�n��~�z��0*�_�~������?�QdT��-..���^�z���*�F�����w����9998p��=�[�n���F����K�����"���A(����H$h��1455���d��g/�D"���O!�U�^=xzzb��Q����{����#�,Yooo�����u������

�:���y�NNN�5k�L��u������}�p��ydff�{��pss���+��i��
��+�H������B�
�z��ASS�����������jQQn�����pDDD����h��5???XYY����p���pvv��9s0m�4��0*���'O�D�����"��������p�B���r��������*����DEE!""�����������������]]]]o{��B!���e=��nK&&&"99����I777���Wkh��������j���Jbcc������_sE�***�����-[����:N�����e�hDD�����EY�,����������&�6m
�����HKK{�nQFF���dEt��=�����O�x>D��=q��	�����8��(**���


��qc����|�;w�\H�R�[���(���G���W/dee�n��5�fEERRR��� �0z����7�]A+�Je=���������������B�s������'�j�*DGG�X��[R���5Cdd$�q&((���Gdd�{���������#��������]�P������jii�y���/���+j�X�C�a�������
�`�SVV�t�fT������.]����s��!"�������h��-�q���3��I�Z���(����C����������OOO��u���\�a���I������g��Xg���J_�eee��>�v��u�Z�N�:���+n���u�p��-t�����V�����7](b���X�v-+r����������k�r�a�X}�T���Oahh����B���������
������q���G���7o���8�;w���k�=U���;;;�c(����������{���-��~��W��9vvv���o����������pqqA�n�X���T��MLLT�x���8���c���������
�����q��������{/^���M�^�nF��}�>�_��.������:���Dii)'��
�B9ro��ANN���'�Y��1.dff����V���|�Z~);w�N�>�p�QC������q�p��}���a��P��������
9wII	�������5k�����������8}�4�1����g������q���*����a����={v��|	���y��eKNa�H$������j�*<~��������$L�>���ccc4o�����+W�����������b1222�r>e �����c��M,��0�2a��h���-�:
�T+t+���<:������0o�<�_�^.�P5j�g������1d��j��|>/^��H$��}U��k��hkkc����?~����T*��x�����)))�����[���r��U�n]��������W�E�����:
��~��wl��
w���:
�T�J]HKK���r���d@�->8&���\]]Uv�"mmmhii!##���\�QZ�^��|k�O}����@ @||<N�>���`4n�"�������7�@SSSn�YXX 55Un�����/�a�\�~��(L-`aa���c��	�����m������000������t�naa!������6P'ZZZ(..�:�R+**�
a�W�Nx{{c��iHIIA\\����'��MS�����@L�4	m���:
SK�q��		�:
�d&M��S�Nq��T�G���X���{��l��_��W�^x;.;;�������O?�$�_\\�3g��&��������q�������S��D"��c�������xzz�����<����H$BAA�������������._������I�&�+oZZZ(**R���Aqq�l�)�***�s�N�[�666X�t)bcc���KKKL�4	3g������r�^�|111�bKcFy��W[�n��������32qqq���_���Q*]���G����������v��T*}��u������-��b�)))��?=z��m���_~���3&L���_�~�9s&�/_����w�����##��
���`���#88M�4�D"����1k�,899}��%",^�666�<y�G��7u)I�*�����x�"����������...rmx�:��'���R�n����Y��)--����������b�����~��%b��U�9s&���O���b�����7PZZ�
6���P�ku���X�d���h1��j��=��~�	?��3�q%�n�N��-���q��x<���(��!!!��^�������������}�9::��;w�;���NM�4�����?z�(�m���+((�
PFF�m�9�����{���#�:v��������;9rD!�V���*�s����O?�D���DDt��
211�����D"���g����:��c�����];��{7Qii)�?�Z�jE;w��h���8�����c�RZZ=y�����?h���@��6l�����~/�����3�4>��%Kh��r;��9CTVV�u��JMM%mmmJJJ�:
��9B=z��:F�Tz��D"A��5�)���S��w�z�����c����j�
�����n�������X,����������zzzm��������
@,+������B��jRR8�����q���^��v���-[����/����i��!  ���h��1����'N��o������{Mvv6<<<`ff�����011��������{�?�.ggg#++K��F��u��:\���-��E�d�0LM����0i�$��?��:
�����A��LT�����P��%<��iS�����������������|�
v�����T���Vz����~	E��W7���r�VMMM��m�v*����m����'���#F������
�u���S�"??_���9s���,Z����[ZZb��A�8qb��M�6
����\���_��N�BVV�������r�����+Wp��m��0���e���(��OmKL������'���t���'N���
,XP�9��nU�z�P�}�jhh������};��<����@6��:�B!.]�{{�J'}v���������=v��i@��m�{n�&Mp��q��5��6MLL��+o�~�.[�K�,a������0s�L�Z���(��w��A���R)�.t555�bbIe����{�n������+X�|9����j�*l����x2�^<�E\�eee���_����Q�F�������vXOu��wR��>�]�n��/_"77���J���*_����HOO�������0�)S� ,,���\Ga8RTT���{C p�R*]�*s�nu����v�������;.\����G��8��Q������Z���@����r�J�Z�
�O�����1l�0���9C^��w}�\mmm��SB�Paw�C�����7����c�3JCOOc����M����pD[[���S�=T��544Dff&�1���@EE�{�7h�C�Q�"������r[�T]��Z�:u*���
GGG���{�DDD������h��
7n����J��n��N�:x;t���"����JKK�[��&eee���������Oc��	\Ga����9{��EFF�Q��T��m������W|�v����{�S�����>^RR�����7��]��y"##1r��j�+��=����'�3����\��������G�^��{���'�o<���g����Em��_���HMMEll���R).\�'''t��]����3��y�M�����/�T]��������]���
��
�Z�h����+�p:�y�K�U���_0`�\�C���dbbBzzzdmmM^^^���K��'������>���Q�6mh���DD���K���"����������'�������������HOO�����g��O�{�&KKK���#333������R��>������K�����l�B;v��!C����KI*�~q��\����?����)��O���������@����=>q�Drrr";;;""3f�l����Z�v����XYYu��������n�R)M�2����)!!���H�R���&mmmz���{�._�L?����������M
6$�X�I�_����LMM)**��(�QQQQdbbB\Ga��!R�{�_ ::c��QX�.��
	022Baa!���	��q�z�j<{�����2�G"�@CC���r�63++&L��{�0}�t�x<DEEa��� "��������������q��!))	���h��)����a����Vz�U�V���]�|9N�>����CWWW�^���~��W}�O*�"$$6l����eK<{����X�x1�����IQQQ�8q���[U�={?��#>|�u�����6n��>}�p�a����n^^��� 
����M��{{{��=��(J�u����u�{���+''�������@ �MT
�������&UEDx�������U������3�B�n�����]�v����8~�8g����?����`���0L�V�\�����\Ga�����br���SSS��wNNN\���bbb0j�(�c��v��!&&F������G'W}jI�/U�N���T�u���r��%bbb��];�cT�H$����0�l��1������gs6�����������\������������\�����\����������u�*9w�lll*�	�a����)\\\p��!��05�����MCYY�Q��Z��x�FXX�����I���777\�vM��,Ss���������;s�J<����F`���\�`j����q��	4j���(�J-
�������
u�r=d\�������G��b���+����J�)�SZZ�s��a���\Ga��������h��������`yKe������LMMq��M���:W�\����1TJ�^�p���c�:�8l!22VVV����:
�|]]]8::���K\GaL�:�T�����W�8=��n�BII	������R�n���w�
�u�*�r�
<<<���0U���={���UTT�������Ic��������
???����w��~�����7����:J�q��	��|��T��������u���������s�H$\Ga���;�������Q>�Z����h����9�u�ZA,��������:���_�>F����P������*w���� >>=z��:
�TI�6m������os�Q�������.�vQuV<��s���Y�fppp�:�J�����}���5 ++W�^U���\����;CSS��(Se����v��1Q������F�BXX^�x�u��u�V|��7\�PY�:u���1�;�u������o���TC��Z�	�����3������(���;1x�`�c|6���M�<u����-[����bcc������hiiqGe����V���8�W�	�B�h�g�����#�q��]�vX�f
������0U���xzz"33��(�>=�0�|����_��:��Z�lf�����j9r$�����d��e:v��rE�H$��'O��C��0�i��5D"RRR���0�U����c�����a�Q���'Op��5L�6��(*�^�z�3g�/_�u�$��p��<xSSS�n�0���[���l}{F)�U������};������v����`�����x\GQc��Azz:[-D6o���-[�{��\G���w��S�N\�`�j���3[y�Q
jW�
�����~�:�Z�t�n���9s�pEm4l��W���3 ����6222�b�
�Y���(_�������#�1�ZZ�j����c0����j�*DFF����\GQeee�����q�F���pG����������\GQ3f���Q�����u�/���2*���#11���^�.���={��O?����h��1�qTZPP"""p��U��S��8j�������n��
>��u�v�����!>>���\��"���x��1������0_���<���h��	�q9�������1�L-{t���������>����cl�����+r�e���6m�L��T�u�U\\�)S�`��5*[�fff������\Ga�j���B�f�����uF�����kWTTTp������S������~�
�/_�:�J
������%K ����/^���|�X���(*k��)���*���?=����lmeF-��|$%%q���.�������:J�������9v������:u*Z�h��3grE�5j�����u��c�\�v
�w�V�;��=���5�1F.lmmY���8�<����u�/���.0������!�H���28���p�/T���
�m�???dddpGe<~��g����	===��T+tubll�vGSB���_W������u������-9��n���)S���������:N�����A�a���(--�:���������t�R���p���?�
�$ta IDAT]Fm"++��L5EDD@ �����(_�V��5��s�p���Z���8J���'0`6m����*���_a``��_S�����_?xyya���\�����46�QFFF��U.\@�>}����jE���fy��9���/��c�q�RZZ�����"  ��8�V�z���~���c��qP�������
���-~��W���MNN

���0radd��.�8"��S�����u�/Vk
]�����3g0o�<=z��8J%33^^^5j�|��4i��'O"66s��e��?��b�=R��w�V�
rrr```�u������D"����u�/��F|Jdd$
���`L�8��8�{��z��
oool���M>S"�^�����v��m���^�z\G�Tqq1�
���2�:u
ZZZ\G��&M� %%���\Ga�j����W_}���r��0���t�TA���q��5,]�?��#�q8���C���~~~		aE���������x2�VOP���E�����qc�;wN�����"����	���h��1�b1���T�,t�u������p��QL�6�VN��t�z���e��!((��8L%tuuq��E��b���o���:R�{���t���m�����j��hNNttt��A��0���P�F��{=�EEEl�O�F��B����{���W�^HMM�:R��H$

���/�������s��8y�$�|>��o���(�#��#G����	�����u������S���x�����z�����4l�PVV�X�Y�f������'ej�Z]�o�_�zpppP�IjYYY���N�>���o��L���A������r�Jx{{#((H�o	���a����:u*8��rI�D"�Z�T3�����={�n���k��HNNF�
���ooo<{�������+�Q�Z���P�~}a����<y2f�����b�c���'��m[��y�-L�����p��M?~�������u$��w�\\\���<x�@ew�����rY���z��a��EX�`�����
b���033���GU~�BF��B�������X<{�vvv8r�����������?�}�vl���}��8�@���h����m��V����1cz���Q�F����h����jDyy9����	&������rl���Nr�B�|��W8}�46o����g�O�>x��)����H$��e���}{�n����0`��9i��	6l����H�9s�:�!"���vvvHMM���1{�l�Z#����b��Q+AAA�������Q�~}��0U0|�p�8q��rQ{>E�������'O��Ct��c��Ebb"��>�P(��
`ee�k������X�z5444���(@��m��s�������*S�J�R>|���GPPv����G������h5�
]`�M��
q��1���s������;wNNN\G�V�~B��M�r�J$&&B__���1b����u��*((���+��E�?���GXX������(X�:u0n�8���`��@�.]p��Y��UQQ���P�n�K�,��Y���������h���l��0�;~�8:w����E���K���`��M���_!�����#Gr���D"��+W��'O���.D���9��p�������Y�:u����~~~����4W\\BCCq��4o�,��!Cj����L$$$ --
�������P(DZZ���aoo�MMMhhh���|>�����/��JKK���������@(B(���EEE������444���	===XXX���C[[��������/������(r�
�/PZZ�'N`���������|||���V#[w�������8s����---���������
o�QR�

��c���M������|>�F���>.^��}��!33#G����?�>����h$$$ ))	���������9444���dE@��
!
�������Bddd 11�������@ ���\]]�����;05�����]��k����#$%%����055�����������M�BKK:::(,,�]����������������������w���+��Cyyy055����V�VSFF8�S�N!::VVVpww���+��o�jo����������k��7`aa///�5���2�E(����8z�(�]���M����
nnn���3lll�}��������q����q��U4l�������A�>}���|~~>�?���0������={�D�n�`oo[[[XZZ~QvNN������DDD���W���+\]]1x�`�TLmFD����p��9DDD����h��z���������������������������D<z�W�^���7aeeWWW���[��3�������G�����\G�V��Qii)n�����DDD����������-�|>lmm���MMM���@KKM�4�X,Faa!���e�9/^��}�������
��u���+����f��
�D�{��!<<�s������E��|4k���������8J�R�B�n��z�
��������`��apss����?�BUTT�����g��=������h���B�e���!<<W�\��������#G���@a�2�����

Ehh(�R)�777���:::
kW$�������'�����#G"  �V�����;F��V;��BW�^�~���DY!������b���A(B$�n����������_������I"���/������b���@����)


���BSSSv�����������$&&"''���(**��u�������Z��xh��9��g����pssCFF�?�Begg#$$;v����!���1z�h|��W���D8y�$BCC��}�b���j3s�Q<�T�'N`���x�����������q������={p���x<b���h��'y��T*���#�m�6�����j�����n��-+�Q�~}�h�B�;���+�n��������?G��Makk+�����+:w���d�J��bhhh 33���\���W�^a��u��k�����?�S�N\�zOff�ls����c������'��%UQQ� 88R�s����#��iS���H$�;w�W�����1k�,|���_4d��]X�+g%%%X�h���kl\Qyy�l�DDD���������N6t����J��H$x��������'���Djj*�t�WWWxxx�������k;�P(�B����W�^���@������w�^444``` �I�����&�/[[[���W�z��y�E�!44#G���y�8_����Bl��
������6l��V'L����������Tf�k��a�������?������q�L�X�+GO�>���#���+����{�Vh{�n�zo�&�*���v�����������aC���������
kW�$%%�����y�^�����|>�|>,,,d3����7j�%%%�a/B����HJJ��u��E��m���
WWWt��M�4����s��X�|9<==k�my#"���?��#����+V���"�[�n��e�0b��\�R�nM2U�����S�������a���U�����[�1c����e������H�2"��^�~Ms���V�Z��5k�u�����������h��U����y��4k�,���B�������h��1���E]�v�]�vQYYg��QEE]�p���K������h����i�&�������j�!�J�����c����i��U�V��qc������Pff�~�����NG�������{���B�Z���W�r��^�~M���dhhH�v�"�T�u$��	�B�?>ikkSPP���r�Z$	����d``@���5�>��V�VS�~������l�Beeet��1ruu������3g��Nff&��?�ttth���t��y�������A(Rhh(999���9���/r)�T���i��9dbbB-[���K�RLLL���edd��}�������M����7<xP�n^^^t��A���HR��6n�H:::�z�j*//�:�\������-
8�rss�����G����=yyyQrr2�q�*;;���O���t��e��0J��rF�����/_����|��Z�KOO���@���"___z�����*��K��G���Y3Z�fM�+x��?O��w'===�<y2��q��H���M?��39::���>-]�TaE���]�xQ!�V���|>|8��|�w��q����&N�Hfff�uF�v��M:::�d��H$\�Q�'N���>�X,�:�X�+g�����qc��F���TXXX��TTT�/��B���4f�JJJR@Z����$WWW�����g�rG��R)�:u��������BBB����w�������RZZ�\�occC�o���9k��[�������������85b��]���h��
\Ga�����������n���u����srtt�^�zQFF�q��BW������kDD_4V������sgrppP���S�N���y{{SJJ
�q�.22�H ���2��=zD�G�&---����D��A����C��s��Y��x�c�����G����
M�6M�{�j���\���+������y�u�UVVFS�L!+++z��)�q��H$"{{{���
]���h���U~]YY��1�x<m��I���VWAA��1�ttth���\�����,7n�����m�T�Hx��1����lll�����:Wll,����)Y�

%�G����:
grrr������������Oe�x+BHH���w����>L:t�:�B�BW>|H:::TPP������y�FV6111dmmM#F��������c������c)++��8�&�Ji���dllL��
��-��>LW�XA��)w���'CCC�u��Q8WXXH�������EC�����H���4{�l������tuu),,��(J����6m��u�b���xzz��u�>���<_[�y���#���������S%���C666�u�����o����7oN�����������+W������:���r�q�F233�����(
�HD��
��={��]���B����f���(��'O��S���/���IM�4Q�q���U�;w�������J�#�Ji�����Y�Z�����IGG�����u��K6664x�`��ZU��#===�7o���Y�r%���t��m222R�i��}dhhHO�<�:��)//��}���_�f�����l�u�t��	������8��(����������p��U��������?zL,��q������K�����(200P��'��o'��e�QjLrr2u�����������/d)�SI��!$�H�Ba,���_c�F�mk��d�!;EdK!���h�(�E�������$�r���{{?�y<�]�y�����scfmm������[�|||���-[�r�V���W�����,����\��W/6e����J���e={�d��M�:�X��k�����E�U��S'����u��BW�222X����������������w�����Q:����3��eK���&�s�V�\��6mZ+4��������:T8���������m����j�<x����������"�������$��KmV\\���������.��e��1===����u����LSS�VL��BW����?����������z������Ynn.���K�!������%%%l����u����� ��������V�Z}w>k�>}���<���gIIIb������ttt�f�Qx��SUU����$����Y�n�X~~>�Q$��������������/����sC$�0��P=z�f����W1�|����������:���������`����f)..���3���p��E4i���<�`��MX�~=.^�ccc��:t���TUU������yyyxxx������e999���'N��:�D9�<�L����hiiq�|���:t(���]]]��H���������3g��:"*tEd��m8w�x<.]��F�qIl������3g����s9����I����s\�x�����G��p��-���W��W�^���7�����Ul����e<x@?�jpuuETT�]��z��q�HKKC����i�&�3��8���'����_���]�r�	�"2{�l\�v
�n����2�q�^||<��������'�����������u�TUUE��������u���-[r��bbb`jj���`t����8����z���Q�0�|�����������7�Q$���;�u�V<~�����"���c��-

���&�q$��{�`gg���@�������������s�Z�h!�~%�$}���F�����_qE�EEE����?���6�qj���Oc��9x��7n�u�fmm
,[���(D������
7n����j8~�8�����BMMM���9s��M��[����'��$c'NDRR�^�*����9����#**�Fl`���HLL���?�Qj���?�}�������!C��#����`bb�����<g)D��egg�[�n�={6�N��u�5y�d�������S����IJJ���1�9[[[��#M�����O���b��\�)'++��g�����#���a``�]�v�����8���y��K�.qEj,Z�>������B�
]!;v,x<������|������	���JEEE���@�~��r�J��!�^�z�n����������:Ns��Ebb"N�>�u�r��I,Y�����{����>>z��[��:��(%������YYY�r!.�Br��!�Z��VxHtt4z�����o�C�o���

�K������pqq�����iS����U]�6mp��=��"&&&puu��q���R�L�4	�����y3�Q���������w�rE�JJJ������������8"E��deeA__>>>0`�q���5kp��e��uK�Sn���#F�����Gh
��1o�����K�.�����������a���x��)����u�Z!99x���D�v"i�����];�������:�@�?s��ALLL��{�]_��,Z�}���"W�������t:tH`m���
T�����'������@�� ++;v�����"��
���q���������BR�~}��3k���:��yyy��������
����_?DEE�Y�f\��:��]��1c�_~����yzz���aaa��@��?�����g����,G������,Cmp��al��	>�:��KKKC��m���#�i���8R+//m������E���0=}��z�Brrr��JI������e��Q�+$������5V�^]�����������wS�+ �G�F���9=��1�}��a��Y�e�-F��w�����{\G�z�������"W�dee1u�T�����(������'��"�]��v�&N����x4l���8R������3���j��i���PRR��m�������������,L		��1c���+ZX(s��AQQ�	���V�\I���@�{Ljj*�����S#h��>|��p���h��5�7o�B���������5!!���X�p�������a��i�&N����������ggg=z���\G�Z�=��7oh�������S�N�:J����VVV���hDW`���0h� $&&�q�"
SSS�|��Zsu�O���u���Bccc���C]]]d�����i���}�6

E�omgdd�U�Va���\G�J4j.z�v����g%���BFF;v�:
g�������
>�:u��������o�BWW������N8�Q�FAWW�V�Y�X�j���E�'���322G��:�Tj��N�:SSS�������������p��.@RRn������s�V�3g����W��m����
�"W�/^ooo������������Nd��/���p��u���0oM IDAT����� ''&&&\G�UTTT`ll�7np�������!C�@II��(�J�^���qcW�9%%%8|�0}(###�o�g��Y�AAA���Y�###�x<DGGsE�������s����J�/D<Q�+����3�1j��c��������r�
�����{w!�"�����������4����W�^"����:u��o��

�:��)-t��YZZ����B���������;.PR�?���������KW��aR��#G����x�����
���)�U�f���4�%`�1��yVVV\G��z�����D�y���(�����#G����~����Qj%mmmt���R��dee!  c��A2|��6`�?~\�}���Fs9dnn��w�rC�$$$�������:J���aC����\G!5@�n
]�r\������q����>���E�����uk�"�F�-�y�111000z?��tuu���[dggsEj���BOO��@����{1~�x��������8��/h�����?�1�
�5����W�^��/�����<���`X[[� ����������%�~J�A9r$ttt/�v�Q�F���E<���(RC��������b���X�x1n��]��D���wx��������Cll�����7��7������ ����Q�F\G����������b�V�sCUU���

Z���HLL������,((�����K�������B}���CLL����m�,ty<>~��c�����O�>��}��?�����hjj��/..���kzI�
���4<x�g��:�X�B�h5�x�W������Q���T$%%��;G��M��/���eee����aC�����
X�\�s�������$���BWQQ���X�hQ������������._�MMMhjj"!!�����q�@�������m��o��k���(b�
�		A��}��A�e���[�*�?88�z���w�XYY����Bk?%%��7x�����1c4h ���p��%����E������DX��U��a�j�',�����������n�:����x��!����G#))	�F�X-Z����QPP �6�!;;;v�������"v�������x��V�-N:v��g��Ux��G��d�J��mDEE���X����������P������Z�&@���PTT�:���S�������<|�&L��)S ///��dee!##S�-,��c�����K�.\G;�'V5���CCC�^�d����}�6<X�����!..����P������Ck�V�s�z��!�6���!//�W�^AGGG�m�/ty<���������t��������� 00>|@zz:F�	���;�W�z��	�������#??�>}���-0x�`�j����7o�   111�_�>���1j�(�	Yiii�v�?��9sP\\���~��3f��������G�b����{����PQQ��lT�
Vvv��7IW\\l��m����+���thkk������;�������<�����/��MA�����������u�D�n5	r�Ttt4BBB���|���V�����@�$a�����f���N�:x���w/�q9�M�\�tI��.�e�������,JJJ���K�:u
<�����-**��QQQ����o�SSSL�<���8p ����z��2��[����X�ndee���p��Q��3��w��~~~puu���f���O�>a�����w/���������?��������W�0z�h�[��&M��p��E\�t	�_����<������T��M---�}��/����|I
�rss~��1�.���EAA~��<={�h?���8{�,"""����:`��Ah��E�������3gp��}����Y�f5jT�Q�+W����
pww�������G���vvv7n����y�f�}-���������/�����"����k���S�
����+W2%%%�eff
���qttdm��a��?����366�������4�c{��e�G�f�1VTT���Y������f�.]��k���^XX������������8w���������M��.c��[�N`�_���c��]���w����������2�Y[[3YYY��������O�~��������=z4c�1v��=V�n]�e��2����eM�4as��)s��u�6q�D���;����:v���M����	�g[*((�u��Eh��&���+**h�c��a�V�byyy�1����������I���+�����
�*�/,,�u���<x�egg���<v��%fhh�|||����������M�0��y��1���g����i��?}������73{{{�����Yaaa%����}{v����ID�Ft�)>>^`��t��]�vEtt4�;&�6�t����?#<<m����s��t����'q���2+g�����8����Jm���"..��^�			PRR��e��^&�Ze/=���;;;CMM
��_�������
33�
��b���L���l�_������)+5U��8���066.s���!�_����xt��
������"�����g��<����i���A������<FNN���;�~�z���e�E�Khhh"##��%�H�z����8�[���N��:..������.]
���'<==����.]�����F}$&&���^^^7n������m��000�������������18P����0ddd`�������2����2;�c�\��u��Z��b�j��������rkM�NDNa�����_���Y����t~P]���7o��U�V���7pwwG��]1�|8;;�y���LLL����m��a��e8w�������_.�%&&���+V�����������>���066����]���=z�
6`��=<x0F����'����J����
�y;>>^`�����#==] m}K^^��K�FFF�n����2?��-[�����-C�-�������Crr2���v��!==h��5�����5o��?Frrr�>���cZ<%8�7�e
��4k��:u���Y������KQYS��OGqq�w_���msss��9��k��y�����r�������b��)�������w�8���bW�F#��$
�������\�r���K�,���o�|�rL�2��"_��������J[[��'4h��b�����q#��];hkk�{��}�9�6m��Z())a���h��
��Y��7�U�VX�x16l��s�"""g�����t��	���EFF������*#3����wo��������!C`oo_�����9���9t?���1V���7o�9����A��3g��Y�'O��������R�/�n1���^��B0��uQ\��[rrr����qc<~������l$$$��G���hnn.�\�##�
�����

����?�����������---��5�}��lT�V� ���L+g����r�r�Re.W������?�q����Licc+++���������7������{��=2��%H�/q����EP8x� ���o��waaa8|�0<<<��ys�OuuuxxxT���)1U�f��	�M�
]���LAA������������������=z����T��?x����HJJ�_!�b���%��T�����G�w������c��n}����_����m�T����*���


��*�7��.�^z600�_z�������J�G��� �����pu�[ZGt++::����`mm
kkk��?�����i� //���D�~����)((�4�'N������i�
]����o����
8w�o���\L�0���o�������<VQQu��Ann�����DAA
��Z���j����V����[>,@�-0c���_HHH��s*3����G�`ll��W�b��y�������1c��<����|||�l��2SMrV%������{��=u�����o���������g���;�����
�#]&������Ux��"m���e��`����������g�����~<2��%na�HMMJ��RXX�c���;4�~��6lc�[�.������~���c�����U��I�&���|�m�>}���R������ok<���&M�����3g"::���e���w288YYYUn�c��h����K���.�TVV�������;��2x���QJMM���"'��U$33���)�Ft�IFF���<}��h��.\���:t(z������Ze�{�_�Z�~},X�����������Y����hL+�+�L���	�z��+R:�S�*���LU/q��vE?A���EJJJ�?�V���������+-��W��>���ix��6l��E���=$$�G�,Z���]��E�`bbRf_�c���m��e>�����7>SSS��[w�����'%%	t~cLL�w_SH���$#(�n����L���KO�,�S~���i����222pss������]�������/_F����W����3g���'0o��r����`����k�$�{�{xx���W8~�8�Q$��VSuF�.\���8��?�����V��r�=K?�Vu�jE�durV5���r����������W����T�����h(3W�#3_;q��@F�yY[VV��5��PS)))���?/^UUUl��666�Q';;;���_PUU��={`kk���p\�r6668}�4TUU1k�,���YYY�S���m���"8;;c����������all��������������~��������[�������[�[[[������X�hlll�w���~M�����e����9s�`���prr��q,
$���bcc�^�=P\\���T������;�8==������G���o��U���f��Y���1WWW������Ce>pO�>X�z5�����q��5(++sR���;��������/�:����j��vF'O�D�z��[8}���IU��Y���5�Y��������Z�Tz�y��e�����c�b��]��|o���8p���e�����0/o{����bbb��s��������/��-Z�����������]__������@VVbbb //ggg4h���cedd�d�,Y�/^�@nn.\]]���u��+W��u������111h���@�I-=1��}�I����U8��:������'c������?������PL�4	������3338::�����8q"������
///\�z�7o���J��"$$�W�F��}��wo�����������g��Mo�S��u�V����
B�v�������c��
�T�����'���```�u�A�n5Uu�����x���4iR���l5$�����Y���R�0���Be.W��s)����_�3�0�|���������F�=p��<y��������Qva^�v����/��/Ak���
^QQ������***?�^�xee�2SlH����#&&F`�ihh����HOOG||<7n��������������?�@�������+V������/����%K��p�R��u1{�l��=���n��Y��P������U>R9T�V���b����y�����#U��Yz�NMW�V'gU�
Kvv6?��1u!<<�/FTT�2���1r��rSBJ/={zz�_�~�����o�������[3f���%K��yshjj"  ���(�*�*#3�?�t�������>~�(����.t�v��'N�}�cw��-wB������E��������|A/�-��SU��pW]������5o�<����i��\G�(T�V���f�N�RVVF�6m���T�]�������JW����#99-[�,����<4l���EKurV5���y������Z�h���d�x�j�5
T�2qe.=KKK����������1a��
��U��Jva]�~��Z�h!������
���B]�F*v��uN��F222���7���Z���y��������		���wq����HZ�VM���U�L:{�l�������t������n5����j���Tj[����NVa�����\*MMM4j�IIIB��Gttt��S�J����011���555����c��e�����h^m��mA���\��-[BCC���Z�b�����'�gii���`�c�J��_���5�1����,Y"��j�3*t��:�ag���`��ex��]����[�?���bp��E���-Z���_�y���=��r��������Y���IIIh���w�o������,��P��"���"�DE7bcc���Sf�8+++\�~]�_�Qpp��\���w/f���u�DS�I__qqqU�[�N�?���0`



����w�����B`` ���aff�*��������L�4	������.^������Q�F��	Tn� <����PVV��������/�U������T��{
4k��,����xx����]+++���K�.j?��k���o����D*fdd���bDEE�c��\��5>��;w�����:
�/WM�^�'��0��X-�1(**���g��w�C\\rrr��}{�������())�/��UUU4j����J�{��M���:t��HusV5kM���c��m�q��w�_�f
����k�.����'O�����5B�z�P\\���|�X���N
� ..={�����OVV���-����,333L�>����Q���)S�����k�r��8r����q������B�������N'������[�l���AAApss+7�����}����Y�F�
##�r���x��:w����T��JG���[�0v�X�z��F�E���2d�O��uRC4^���� �


��B�^�z����x���S�R������___��E___>��\!���76l��7or�Vx��BBB�G��F�n
XZZ"((�����O�����2g��Q�F���-T���7DV����!##���"���;v������!������~��>����#G����:C�C�n
���			�S�7n�����;W�������g����###��'##�q��a���"��6�x�"����fe�4�0a�������u�����s�NL�8��!!!��/M����F������/p,((�Ro�666�|�2JJJD����t����E�b���������Y�����,X@��E�u��ppp�p�����q������,��S�0a�r�A���S

4'O��:F�����������������_�>�s1___�3F�}jjj����6mi��IPP^�x����s��X�t)v�������H%���[���Wz�PA��������i�&4h�����
�rrr���W����


B�F���g��>�N�:prr�yn"���S$''c���"�{���8r�H���&��f�,X�������o�4-GH��9���b�1��7nD�6m����r�A���b`oo����%7nttt�|��J=>>>���HMM����������#'';v����I�&�A�b��4

���c���K�;���p���!&&Fh'M�F������+����q��q�!11FFF�}�6"@4�+��7rssq���*mR��m[���3BLF�/oG��tE���kq��I��s��
���OO�
����d���X�����{��X�p!�Q���m���aCN=qss��)S��0*t`��!�����'O��R��8qFFF�������M��M�6���Bv��q��������������?1s�L�x<�rH�M�6AUU�����7op��9L�0vvv066�(�tJOO��Y���sg���3��@@��}���W�������~~~x�����/N��fT�
���,�O����<�����9s��>I[ IDAT���c�"33�/_B2|Y��������Rnnn��x��g�9�Arr2<==������n����������k�������H���p�V:|��k��A�v�������H�^��W���������(�����;��w�,��'O�}�v:xE���t����bcc��R+;v��o���x�j=������T��H�S�N1}}�j�|-44���������H,���������������Z�h������A�XTTG	�KAA��{7���b�������e���x�����Y����������I�&,##��(DH���?���M�4��R����u���=z��m���3---,�`�����:t��e,Z����������H$��C���[��a����W��?���)**��'���$RJ����e���ys��Gv���
�TTT��[�D�Pz$%%1555v��9��!�BW�^�~����i�H���9���k����k����311�QGi����tuuYQQ�Q�(..fVVVl��9\G�8aaaLEE�={��������GSSS�������sssc�����*�>|��V�X�������5�~�z��w��q��ys���{!'�.EEE����-Z���(D�h��5k��'O���s��"����1�|�X������c�����v222������l��)@YYYX�`�n�
���Q�^=:t����g��#12220j�(l���}L��]���#_������3:t���~�����U||<������[���G�x�"�]�++�J=��Q�����q����*X�hx<V�X�u"dT�
���+������\G�J���h��)F�]����_c���1bD�EVff&6l�]]]���`��5X�d	�/ K�,���9�u��j��:���'�3R���|�����������rrr���+s[��m�w�^<�-Z��������Z��IQQN�>
t��YYY���?LLL����m��������!��9x� |}}q��)��_��8D��R�F�f:::,//��(R%11�)++��|�������X�.]X�����������<����]�z�M�:�)**�����o���0a�8q���i���c����^�~�u����{7������?P\\��������y�o��e/^��c������Y��-Y�v����{��� #���/_���3MMM��S'����233���7o���6��a�@��V���LEE����s����&�1X[[�����'v�����G���lD?g�;v������/ttt������L�{��?FDD�5k�_�'N���n�v���:`���<x���,�����=z`��I�5k�q*e��U8x� n��
MMM���WWW��{AAA�����W�^����+++L�<���R9�������O���S������#~���J[^U������7��]��'
�}Iw��]0�����g9N�<���4���p��6�BWH�����gO\�r�������={������H4n��{zz:,,,�������#11���PTT���:v�hkk�����/���	<��cIy����������@�6\�WWW��s���/�����#cX�p!��;����~_>|����c���HNN���=�����K�~����������'���#������ppp��u��}���a��}6l�P��$>���-�o����o����CCC���������
����n����e�����\G�hO�<a����������������;5�g����{����TI��o��~��w���O��/�&O��Xrr�H����f�G�LNN�988��{����x�����?2�������,:t(;z�h��T�p��
�������#����������
��?�Q��#���S��Q�P�+d����������pE"egg3���U�cv�����][��������9�={v���-������
		�:J��[��5m��=z���(����g#F�`��w��C��7o���;������"���b�F�b��og�?�tK@��bbb��c����s���	k��355eK�,aAAAb�>���'�Y�fl��\G���3g���2;}�4�Q���'Y�f��p
��B����n��a��i3wQ�899!//~~~%���a��]8x�`��{��5LMM�x�b��1���I���T�������g��:N�y{{c���8}�4����u�JKK���������'OBNN��H|<���		AHHn�����l�}��e�k���������#11�^�BRR�������~������v�
sssXXX@III �
���/agg[[[l��U*�@����[�z�j�={����f���

��?�����f�m���'O������!C��#1�-[��'O",,���>����t��.]*�~�>}��}����#G�H��&++077������#0�������www,Y�D��W��7����_�^^^b����$''#::QQQ�����g����3dffBMM
h��	�6m



4l�����oCFF�?Fvv6>}����,�������x����}


�j�
�Z�����t��.]�H�<�w�����EEE8~�8Z�j�u$��������!22���044�:��999���p���BWDn����C�"  }���:����kV�Z���PN�T���0`��8q�|������������������=z4���p��4m���HB���m��r�J����3f��j,''���x�������������������C6lyyy())AQQ���PSSC�V����-V#�5����j�*l��
�w����#���&""�F�B�N������AQ�y�&���%yj�M�:g��e�������\Gk��}
`***�>��6���a���g���g���\����|6c���iS����u�{��9���b]�ta��?�:���/3


6c����+.
���SRRb�w��:N%%%���CT����;���{��)�Q�R`` SVVf�n��:
c��s��1eeev��q��p��������
<�}����8"�Z�l�(������l��eLQQ�-^�X,M�JIIa#F�`�������R�P:((��^�z�'O�p��*t9��������%�49p�SQQaW�^�:JaaaLCC������(�y��
���#�0a+**�:�H����0EEE�b�
����u�j9w�k��
���f111\�!�|�2k��-���/����:N��~���;����3�(���Q��???������"�n�����*�+�k����Y�fl��y����s�k��[�t)�Q8���S��_?������[�������S%%%���s�{���E����c\G"b$//����_LQQ��1���b�����f���������Si�z�CT�r���+LYY�Vo�]TT����X�6mX\\�q~())�����^�z���$��]II	[�~=SVVf�:���}�60`SUUe��/g���\G*�����8q�1�w�^:�T(==�����LEE�988���P�#}WLL�8q"��}��%����B�c����U�V�������pG����X�^����KMM�:N�����3v��)��Mzz:���g���,22��8b���l���LNN�
:����s^LFDD0www����:t��|}}k�R}�>}bk��eM�4a���g�����#��k333c


l��Y�����f"��
]1�������{��1�qD����LMM����I���.0uuu6y�d�O��c����M��I�&I�|TQJMMe�6mbFFFLUU�M�6��dU{QQ��������Y����:suue���z�Dz���@6j�(&''�������7���I��������l��aLNN����1___�


�S����}t�c[�n��+�f�L�6
����:�����`���8z�(���8��H����G,Z��O���e����"�?���������?��m�`oo�u$����;v��]������sgXYY���h��U�~G�������#((�n����
���0t�P������~E����O8}�4q��M������
VVV022���.�����~AA��������yAAAx��5���agg���GCKKK�_��dff��������}���b�����2e
����;v�����Hs��i����K�.��c�7o�u$��u�f��l�����&������av���Y�fa�������:�������;,,���������.tuu��uk4n����PTT���"����?�+77YYYHKKCLLbcc���t������������_*�%JJJ���C���x��)�����Y3��������!//yyy������������Dvv6rrr���8$&&BCC���7���`jj�
p��V	c��
����������P�+�JJJ�o�>,X��
��������u�j������"##�v�Z�7��HWTT������������%K`cc�u�z��6m����w���k��E�v���%���{������!99999���Aff&rrrPTTeee~,//�&M�@WWzzz�����#zI�������X���!>>�>}��>���"''�5��SRR���<ttt������\5�y�f������PPP�:�
�b,55s���������777���/\�����xxxx����pss��%K��H�����a��}��a�6m��s�b���h��!����={�]�v�����!C�h�"�o���X�"����[[[��yFFF\�!���C��L��Mq����q			��������������O1n�8t��222x����Y#�E.������������������M�b��i

W�+�������n��������x��!|}}��%��j�����Q����EE���]	
�9s�
�o��[[[�������3g���������i�0{�lhhhp�sO�>���/�9�
`�����B��}���*�>y<"""�������������q���� V#��"�\]]�W��x�BW%''����������1f��;����[Wt������y�&�9�3g��K�.pvv���#���$�����!!!�z�*���CCC���������.������Y�v����;bccq��}��u


������5(���	!D����n����W�Q�+����___���!//}�����,--ahh(�����q��}#((w��A���1j�(8;;�u���O�������[�����������aChkkCAA�7�/��[�n�������C�U�zzz���3���K�!��zT�J�����~��x�QB===����U�VPQQ���n��1���>}��������/���aM�4���%��M�r�K����z�
III����O�������b(((�v���PSSC��mk��%!�"����R%%%HHH@lll�����$~A���PTTDVV��5RVVF���������q7!�B��Xqq1���������CEE��H�B!C�.!�B�O�x<�>����}t	!�B~ $$=z����:
�"�7`%�BSIIIptt��-[hDW��B!������C�>}`cc��k�r�T��B!�`����	?~��h4WB��B!��oxzz"""w���"W�Q�K!����'Ob��M

�#�%��@!�����CWW��(��h�.!�B�J4�K!�B���B!D*Q�K!�B���B!D*Q�K!��Zi��
��e�1��>��B�u���l��7o��:
"�^�B!����?�L���W��k��\�!BD#��B�5�\����'���sT��4G�B!���;w0z�h=z�{��:��@!�����XXX���C��:*t	!�"����p��m���p����B!D*�]B!�"���%�B!R�
]B!�"���%�B��x��	^�~�u"&��%�B�Tx������X_�G�.!�B$^DDlll�f�899q��	*t	!�"�n��	xzzb��)\�!bD���B!�u��y�7{�����#�q���]B!�H�`�������"�|��B!D"������k���+�Q���#�	!�B�T���B!D*Q�K!�B���B!D*Q�K!��ooo�c	E�.!�B�����1`�(((p�H(�^�B!b�1����c���8{�,,,,��D$��B�2e
���
]]]�#	F�.!�B�BJJ
��qc��w���\G"�� �B�X7n����~�z���X�9*t	!�"�����%E�.!�B�J��!�B�JT�B!��D�.!�BD"''...HLL�:
�%��%�B�������x��5j�uRKP�K!��)))���lll0c�\�x���\�"���A!��HJJ���3222��;r��24�K!��D�����gO���S�K8A��B!D��<y�>�o��\G!���B!D*��B!�"���%�B!R�
]B!�T������������R!*t	!�RiX�v-�u���m��~��\G"�B��.!�B*%  s�����BCC��C�#�CT�B!�����������c���pvvF�:u��E�OQ�K!��
����G���S� ''�u$B*���%�B��A�\� ����%�B!R�v] �B!R�
]B!����-�����B��Q�K!��BQQQ9r$��W/4o���H���BH-�#F�w��044���/��_AAA��h�m/FKDzz:�1�k��Y�W� 88���055-����4�?�'O.�|___XZZ�A�������aggW����x{{c�����
@��mahhX��c���g�����.s{dd$���aoo_�v���[���?���L���.�y��022*s��W���c����{�n8::BUU���[�n���S!++[���W�BEE��u+s{JJ
�\��	&�����0`455��~��=dgg���������������[��j���,���������3�{�n���/\�"D���%�������M�6����:
���������/t��}yy�r������������/��G�r���)))�����g�m+99����nOHH@����������_����{wU�����lb����7�LA�A�,Q%-5�2sE���\+�LM%%sK*rA%P+Md�LE�T`f����7.�3������~���Ws�y�py����<�  ==u-�����Z�#;;��\�/_FYYY��e2***j�~��-TVV�z���W�^���+W�������w��E~~~���Je���jgg�Y�f������'�)��bDd�z�����7c��!bG�VTT;;;��������]Cll,���'v�~��g���!  @�(D�@q�.�D�F���|�~����p������Z���cG�����������R����7oF�F����(v$"��;�DDF��?���u���QKRR���'v�Zv�����T�c�[FFBCC��C�[�������;�A�]""#'B�x�M�:n[EEE�����wc�����d�:u*N�<Yk�
"�F#"�d��������>�����q����almm1~��Z��QM��KD�����v����o���f��������2�i�F�(&%$$D�DF�st��TT�.�B�9IM���{�*�m���X�z��1��_��;v��O>;
���]""YZZ���ENR���q��	�c�2k�,�#4�R���T���#>>iiipss��q���Fd2X����R��s...bG�!??eee���[^^���`oo/Z��S����ptt���#�|�rx{{���i�S��$eggc����=��� IDAT��31i�$�Z_���+6l~���z��������_�W'N���������`���8}�t����{7>���z��+W�����E���/ %%YYY��q#���"�HxG��L���g!�J�u�V�����������K����^%Wll,���p��$''#''����n��S��}��r�]�vvv(,,DXX���s�b����+���I6n���v������d���@"����������K:�@D5��%"�R^^��_~c���.r�S�N���1m�46=z��{6[[[���c��EX�p!��_��������y�&6l�P����=��[�K�.a��u�����v+..��p��=��{&L@�=p��q�>}�7���<<<���Q���p��q�d2���!==������kkkQ���8u��LJ\\d2^|��Z�^x�(
|����]�U��������5x/\��)S�htmtt4222��o��:6s�L����s�N�Z�J�k
����i�&���###!!!�q�^}�U<��s�H$X�|�F�TUZZ���������`nn��S�����GQQ��;�u���O�>:�GD��]"2)?�������1KKK�j�
�����M��41������g�����;�_~�%6m�T�X��]���*++���z�F���{�u���#�.]
��>�����@�������O?�.����Z��%<<����q�rrrp��
���c��]��&((AAA����t��Fk"�z:v�<�I���[���~��[���m[���*�����R�1t�P��]�h���1g��Z�rss�=�A�"@�V������u��"�J�^�p��1\�r�?���}T�=��R)��o�:�JD��DdR����w���U�ejNN������p�>��cDGG�}���|||�<�������(���~���,,[�L���9�j�kyy�Fm����O�>����\�R�|Dd�X���EEE����yN��r�\o�t���Y�+c��M����x��A��W�^�����	�n�<n�88::j���]"2eee�����T����C�����L]x���P����C��5jC��t��5\u��L���e��bu��T*�����������0�n���a���Zko�����e���[�3F�v~��w������DdR���<z�f��`�l�ZU�Z�[PP���T������y��!>>��%��q��Mdffj%�&8u��L���3����{���y�����h���F���b��w��������s���o���c����U�������K�W��H$g��k]��?U���s����Q��;�DdR��]�}�v�������jtG�P���a��}�j#33s��E|||�"�{��&K�]�x���j]s��
�9���h��96o��#F���s8|�0|}}�w�^4o���������V�hFD���nK�Spp06n����$8�����4�k��!*((@rr2^z�%���q��~�m|��w�������PPP�Q���_��70l�0�����C��u1b�FY�����P(�lMD��B��L��A����(����077�>�q�Ft��	o����	�v�����G������k�c�����E�~�jS((((��i�4j���O��tm���bG "=a�KD&'22S�L��q�l��			�����p@�V�^��'O���prr��o����H���c��%pwwW�]A�T*������^CFF�����s4���T*!�F�����L�t�m""���6o��!C�h�FJJ
N�8�R���{C"���A�������	�����;���!!!�x���Qj���O�������J�(D�@��%"���BW�JKKamm�����B�8�*++�P(*����� �*D�pp�""#gff��-��dff��j
�VQQapk!�n��%"2rIII�$3�}�f��)v�Z�N��M�6�����S�� q���*++QVV+++����T*QYYYc�CPVV���sJQ��r""#��Q#�+r��A��!�I!"���"")
��4$���

;F-���_~)v"j���6�j��Q�
����A��m���hk,t��TV�����m�������QK�n�8M��DeX�5�-33K�.;F5A�d��9�7o;N-6l���G��ADz�;�Dd������E�cT������`���5����_X�l�l�R�����=�?�|��q��9��?��5�����������M�������GW�fgg�������S�V�HMMEBBB��������'��y��5^��};��/�x=;;�����5kj��x�b����x�����+��������O��_@*��u��5����A���k���u�V�Z�
6��#,,���w���=������5^W(Fttt���t�R+�&�Dd�V�X����kt������/�@"�h9��S'dffb��5x����_������[���������U�V���g��6��U�u�V����,\��f�B��-k���SO��g����!C��9��s��u��m��Pg[�?�<�4i��c�����N����=����\�S�NuN�����A����_�~ptt��z�6m�<�Q�F6lX�~|}}�<��L��%"��i�&9r����z�����8q"�9WWW������Lxyya���X�d��Yrss����N�:��o������y����%"t����iii

Btt4����dpss���;v���"��]"29���8p�V�����D"ADD�R�V�V�!�p��	��7k��5�)��a��"2)EEEprr���wagg��6�r9�������U�Vi�MMZ�KDd��0���g��[�nZ+r
����={"""B+mjJ.�����-��y�D�BDdX��I������r8aaa033�Z�����C||�#WQ "��8u��L��q�0z�h��5K�(DD$2�DdR._������F�@.�#%%#F�;
���x,���]�����[�na��a��c��Q����B���I&�a��������m���CD��DDF&�����;RRR��������KDF�����B�;w��5�L&���n��)j���X�=�������E�BD�)./FD
�B�@@@�����SO��#33>>>

���sE��s�N�����������h9�����.Q�&�O����l>|��0��n�����|���K�DD��B��LBEE7n��uaaa�������GGG${2C*r��L	���I���Dpp���DFF���C������E�X�i���I8�<:w��������?>�9&{<;;;�����6m�h��L���I������wo���~�-\]]u�����i�"��HG8G��L���RSS���������������~��KD&�����o���;v;�Q����T*E`` �\"2i����eff�k��h���<����3f 66�&M;�N�����t��]��u��U�i������/V�\�-[����c����(9����wt�������_����1)##���8x��(����c�����w/RRRX�Q��;�Dd������[QPP���1�eff���o��D�p��A��u�N�����(����U��d���c���8r��(����g��GDd�X��IJKK����m��T���
��%"j�8G��LNNN$	"""X�5`��KD&E.�������X�j�(��Y333��7O�����o,t��d(
������	111033;�^eff�[�nb� "2��@D&C�P���
QQQ
��K�,�D"AYY��q�����QKKK���3�����"���r���+8�<�����C�#��%"�6y�d����b�Eqq1�����$%%��%"�,t���]�v
O?��(}�����/���b��a���A\\D�BDd�X����w�JKK��];��-����{w��qC�}gff���
^^^��{7,--�����p`"2Z��]C����~����L���`����L����;����3g��o""c�;�Ddt


 �Jq��yt��Q�}Wm�x�b���[z��J���Y����.�B������@.����Yo}B�KDD�c�KDFC��1�����};�����m[���"����p�.���0�;wIII������3Z�j��~A��)SX�nADF!22aaaHNN���������z��B.�c���X�j�����/�)��"2x����?>bccE)r���������'������1����%"�gff�o�����bG�9�L777���s�\"�z��""����T��b���b�!"2z|������b�����q#&M�$v""���DD�O&�a��9��]�.]��3�"��H�X�����v��]�����2�z�������%"�t��e$%%i�-C������_""S�B�����[����G�s��'l����}B�KDD������ ���c���8v��J�����^}��%"2m��KD�KKKCPP�o��~���tM}�[�n���S�EnII�^�!"����%"Q���@"� ""R�T���������q�m�����;�V�&%%�s���~��^�#""�D$"�\�D���`����um~~~���������S���|���pvv�K�DD�B��D�P(0~�x���j__PPP�;���~���5r��CD���a4"�R���!C�����^�
���+Wb��-8z�(���+v$"���.����
����������c����E���x��W��o�!99����D�B����{����y2�EEEpuu�q��*,,D�F����d�w���L������d�����s����SO=���(�DD"c�KD&)33>>>

U{E""2
,t���p�3""X���`��1����K,r���
]"��B�������U�V:�O�E���~�m}��]"�	A0c����c�������`���:/rA@hh(-Z���\��EDD�3A;�����c���HJJ��V�u),,��m�0o�<������r���+8�<:�5r��]"����H���!99...Zo?;;�����������#  >�����|����"����x,Z��I�+���<6������c�KDdX��V5n�111�����Q�F.����
�����g,--��DDD*��D�U���:�#77W/�U���CLL�����'����Q��d������!����CDD�S��hTm�;{�l�������]"2
U�A,Y�/����q�����%"���"w���ppp���s��EDD��.id������t��������+Vh��\���G����j�DD$�D����x,X����:�k���5�\]������'���1`���CDD��U�H-/^���'�m��T*v�z��d=z4���5k��Q#��'"2��He999�H$���0�"7%%�3g��]�"������.�D.�������X�j��q�-66��O��
(v""��D�D
��-Z�@LL�^w%����r������>�����q��HG�0=QEE�
�%K����Ao���9RRR��`'"����4"z"KKK����l72�L���{*_�f���}[�>Y��>�D$��m}�M�������q��-&#""c�B��DS�������[o�u���
u����L]"E}�\pttD~~�c����?PRR�iD""2r,t�H��[�O.tO�:���������$""#�B���b��1����Y
�~~~�*r������3f��[�q��i�7./FD�.@��ys�n�Zg�4m����h��m��qpp�s�����#<<�������WDDd�X�A���3QVV���(�/�U�"���n^^^����+Wb��-8z�(���[�>������%"�X�g��ERR,,,����Q�F���{�.r���q��y����}��"�#""C�-�����H���!99...b��Xtt4����Z����L]�,>>'N��#G���*v"""���D
���9v����"W&���?�z�DDD�b�K��yyya��QZo�j[_kkk��MDD�*�D�UU�A,Y�s��;5`,t�Hkt]�~��8p����%""��B���B�E� ���������He\G�������������K�^�*�J��=���HNN���s��m���}������j�DDdxG����u+��}����];l��A�Enqq1����������E.�?�O��j�DDd:X�����x,X�>>>:��������j�yyy������5�;''�Z��m�7o��j�DDd:X�����4!::��6�������++�:�������������������H$DDD@*��Gm{������c�y��gX��#q`"$������Z�J�8:SXX'''<x����b�!""�B���(
������	111033�Z�2���5C���f}999!%%]�t;
��%21������@TT���\///=zTkmj�3�<��W���������j3���r(
���h�FJJ
:v����[k-��D�X�*r�r9^z�%����������%""���D�H�*r���0|�p���!,,Lk��]"�����+W����C���={`ii��������S��N?��#���O���Zk3%%R�,��%K��.Q]X����L�<���h����q�(66��O��
(v""j�3�R(�0a����f����,������bG!"��wt��� �>}:���q��aXXX����� �a4"#�b�
�={���,r�_BB�����ADD�S��Hdd$"##���GGG��YPP��%�-Z���b� ""�;�DF">>���Gll,\\\���L&C�=p��y��'����������{���BDD��.�������]�������233�����K��o��ZiS&�!..N+m�����>�,��;������p��%25j�V���f�N���a�p���������3��MDD���.Q��"766c����u����oj�Mu
0g���o""2L,t�]������3+�F���HMM�""2<\G��y�������"W�\�[�l����6�WSh��d2��l�ADD��B��Q*�h�D;�
���;���p��!t��A+m��B�@��M��ADD��.����u+rss&v���~�:����~
^""2],t�H||<&N��#G�hm1""������/"((���,r������.�����D"ADD�R��q���L]"���rH$����		�w{2��F�BYY������1b�K$"�B��^z	={�DDDD�����W"�������}�����KDDT,t�DTYY	///DEE����^mis3A�������jK��Cyy��1��Hd\u��h��U*��={6���ggg-���g�y_�5�"v""��9m�������Gzz:���OOO�<yR�DD$2�DF�����Ghhh�����<xxx����������R�������� v""�.9�L�=z������#++�152���yyyx���q���������D�B��L���?���0�;V�(DD$��mCd$
1j�(��uK�(
����'v""]"S(���#��i#v�c���8t���1��HD,t�tH��9eee��}{���%�
8����B�;
��st�th�����?�������q;����x�"&N�X�<�������0p��z�CDDdxG�HG"##��W_���C�.r���q���z�)**��1c^�v����]"�����E�p��A���h�Nff&|}}�t�R��������OOO���������"""c�B�Hlll�s�N�  IDAT���O�6�����+W�����C�b��=�����-"""c�9�DH[EnJJ
�R)BBB8e����&b ��d2����l��zMW���G`` 6m�T������������o�����:uj�����?q��5xxxh)�q{��!,--��ADDz�B��L^tt4��������Dd�rrr��K��}���b�!""=��D��u�V>�e��k��}�rK`"���.������`�H$���
&L�����c���%�@ZZ���
WWW�����?P\\\��>}:�Je��i&O��#G�����bG!""=a�K����H$DDD@*�j�Fzz:�
���8�s������...h��+>I��-����]�v�������.��r9$	����Q���7  @�6���{�5
k���a5#::Z�DD�',t�T�P(��K/�g�������
m�x����c��]�<y�Fm4TR��Fyy��Q��H��������f�����077W����� `�����e<��}���QC�B�H�q'����X�d	�����C-'$""2=,t�����?�����j�������F$"""��B�����LF#""""��B�����L]��QXX�#F���������'J�
QAAw�#"2a,t��A�P   ��7G�v�������^�o�����GIII��!��9?����1��HGX��?A0s�L���!**
fffj]����n�����������8x� lll�n���M�6����t��.��[�b��9���XXXX�um����������Z�*�J��5{��Arr27����S�"%%����Q��HX���mu###GGG������x3���bH�R\�t	���j�T?vvv�2e
��['v""���K
^||<&N����c���j]���ooo�����<������;v�����Z��vdee�o�����B�-��CDDZ�;������b��]����m��P(�����{���Q�N�������DD&�wt�44p�@L�2��������9\�v�o:��L]"
�Y�fb� -���1j�(4m�T�(DD�%,t�����$q�.�$�D:�P(��G�{�4"""R]j0�n����0��WTT???�������z�������B����x,X����j]����3f@���yyy���D�f�{{{��'""��c�+���bL�>���bGQ��]��g��ch$--
AAA���������edd���}��������]�r���:t(��%2`���yl$jX�����#F���1c���0abcc��7��E-999�H$����T*U������� �Y'755C�APP��]�F��+f�rrr�l�2�c�ik6�������b"D����<��+W���W^�g�}���{N����������o���.bb���pww���?V�Z��u������R���z�*��yl���&M�$2����g�ALL<<<��C:��q8;;}�<x!$$��
��-c��H���	g��1�����/���SP*�u�����/�k�N =zT+�jKU~�B!v��*//|}}��'
���*_���!�m�VX�v�F�^�|Y����|��������1JC���9#�n�Z8p�@�kW�^\\\�M�6=�MC���\�����s��Q�]YY����c���h��q�����pww�7�|�q����?]x��`gg�������|||������\xzz"44s�����.]�ht�9s����KHLL;��0�q���/��2��??���;u��?�o��d2Y����H��M�g�}�8q����2eJ�����������+3f����k�^�@��6m������l��
�����t2]���

���K��b0L}����L&��/�X��/��B�/����m��H��E����?���sF���; �Jacc����2f�\�v
			bG���C���HHHn�������Et
a���������YZZ�U�V8|��#�6����X5����;v>Daa!F����lH�R��� ;;111x���g����������oAp��A���O(++����R)���j�{��=zw�����w�`�(�JDEE�i��DQQ��}�������wou{b(..��p��=��{&L@�=p��q�>}�7�����i��z�����xx{{�)��P*�h�D�_�sss���{

��1c��iS�#i���*cp�-��[O��;h��u��[�n��~�
�n�B��mko�c#�!����~��;wb��������5k���� //p��M4k�^^^��Cy��\�r9995�

�����z�jl��R�������������>x�W�^���~�����������s�=���c���j����/B.�c���|��B�P ;;�6mBxx8222�7n��W_�s�=�D����?��^�z����Cj�����g�}W�\;
���I�0z�h�E���U���[O���fKK�:�W-C�����Hd��x���Ph������W���I������}����O��Sff�@���G��������^�uU�N�>]�}��PZZ*<�������U�[U������*���o�l��;v�����q���[���zb�e��	m���z6C���"�l�Rx��w��BTo�0�2����7WVV
fff����������8.7������rG���
��7o�uL*��y��j���];���C���z���)))u^W�����-[����%~��wl��Q��U���333���i�muU=���uk������^�z�����w,�7o����K��.


����7n�|Mzz:�����������Q��f����������8��1x�8\VVV=�=j����>|��>el$���2�����
��+�y�f�9�
���#�v{666�p�B�!;;��'������^�y^����A�f�j��>}��z�������<���-�J%����-Z�$��(
L�0O=���o��5��������+���]���H,Z��v���#���`�8��1x�8lii�&M�@�T�����y�J��������HD�%Z�����#88���������3��sg,[�L�w�eee����������'#66���TTT<����zJ��A<0�w��<���U��ZXA���3QVV������Vnff&|}}�t�R��3G�>����b�
$$$��%�c(��>�`���p���G��W({{�G�!��HD5���x��-�������3HII�7�|�>����GHH�c���dh��������///�����~�~������M{bu���*[[[����$@�\kkk8::����+p��Y$%%��VnFF����d��7��w�RSS����:�72��1�qX�1Q����3����{���y�����h��1:v���>���&Q���d��E�mmm����w�y���;����o��'��k���y����:d2���k<M[�1S����C.��;�?�VUU����
Aaa!��k'J���������C�T�cRU����Y�-�"�L�����3��}���w�����{GW����j��-//���;k
�M�6��/�X���V�Z��@aaa�`����&M������u�����Q�������V�'�������_���uO�����>����1w��222T��M����?>����'���"�;������_�B��q�-88���T�XZZ���0f����!��HDum�������W�z�����I�j�6h� 4j��O��~�����v8J�/^�q��m�����[�n��a�.�]���qw������M�"55U����x��t3g�Dhhh��?�XQQQ����{�����_U�a.mrpp����1p�@��W(g�KZekk�7�x����{VeV�oU=i4hUk������S'���[��C����A�+�	�����;+W��L�"l��A��u����/
+W�*++k]�v�Z���A�?�0m�4a��}��n��-�3Fh����z�ja��-��i����D��������0x�`a��5� ���g___�M�6B�������>>>�������������-L�>�������~~~��!C'''���Ih������+���	���u^��];����O<v��ua��������y�����=+���O������eK�y���������!�j�������K}�L���c�E��Ccb�����O�[O��r� �J�D"���/���W���P�{��Bff�c���Hdx�A�K������-[��\.GFF�5k���;���������###]�t�s���w����+���A������,))�R�T�c.u�VELL-Z�k���V���9�m��_�U�(Zq��q<X�����dee�_�~HMM��H��p~�8����'N@�T�w���H$O�����F"S J��P=|�]�v��~���'�Gc=z���9s�z��Pm��aaaHHH�s]a��Y�bN�:��G�����O���)��D��pv/h,--������O?;��~��'����ENR?���������c�Ky��w������(����t5���HdjX���������Oc��5bGQ�_���_[�n}�G�b�~�:*++U:W�Tb��Y��g�����o_�#Seaa��7b���:Y��tC���!��D
]DEEa��]8r���QTVQQ���@���;������[�b��e*����WWW;v���C*����KHLL���s}�R������7��q�O[����F"R���������:"##��!�����5��)St�W||<&N��#G���������N��0t�Pt�����F�}'"���8�������B�JZZ<<<�m�6H������f?�����F��a��c�K#''nnn

EHH�c���gDDD�$,t� ��r�������V�z��,r���H,tIt
�~~~prrBLL��#}�����3���7��SB"""2F,tIt
�k�����s�4����,t��I�DD
��!�5m�.�J��P(0c�$%%i!�f<x777=zT�(DD
]2���;v,�����G��Pfmm�M�6a��i���;Q���d���������VVVbG"B`` ����E0�HxGW��\�������h������W�����C�b���,r�`l��			��w��Q����7q��-�c��a��Co�������a�.]��>}����������b���

���k�|���x���Y���g�}�
6���������x{{�����=/##����5ky^EEf����>����ZNK������<y2***��CD����%�P(�0aZ�l�:<����xyya���O��q��8{�,��H�>��#���<;
Q��D�d�A���3QVV����?rC���T)r�p�]2���O��AD����%�[�b��=���$XXX�y��%"""mc�K:���H$''�����s�J%����t�Rn�KDDDZ�B�t&>>�����#G�������4i���$�j�����o����=,--u����LF#�i��9v��
WW�'���"7##�
��]������L�����R�>Njj*�R)�����_~YK�����Waoo�-Z����$��.�����F���5k�F.���?����\_��HGX��������i��k�.L�<Y�8D:��G�����/;
�Ib�Kz�����������;���w����'1b�=%#����������
{��;��a�KzQ���������z
�O�F������H\:t���;1s�L�����������z��u+�,Y����l1o�<8;;k;"�A���Bhh(P\\,v""��B��%>>,�K/�T�q�xF�����g���5k��Q��L�#����!((���u.%�"�Hufff���Bvv��Q��L���Frrr �H�TZ����W�����K���%R���5z��%v""��;��6�\�D���`����yN��e�����:�f�����G�Q�����]R�B�������g��.fnn^g��a�����h���.c��.�����F��o�333��+W���-[p��1���W�)����X����4i�����u�R���9sp��i$''s�0"5	����J~BD�&��S����0a


���'''�#�����'6o�,v""��9�T/�.]��k�y|���h��X�ih���HLL�{��'v""��BW�����p�B���Z���????l��Q�d�q��%x{{�����<��/����~KKK=&#2-NNN�����M�)v�x��71m�4��u������c��)X�`���������M�6!??�������~=66�F���/�������P{222����w�y��_S��m���oFT_O?�48�����;�����{pqq���q�������=777���+V�1!3A�C����Wc��-���#������8p���;��


0n�8l��...5�edd�����A� !!/��:777����w�}���H$4i���="##1f����`��#K�.ETTJKK��O?��E��R(�H$h��bbbj,#�"�H|��oGhh(~���k�N�8:�E�A�_�'N;	�:RQQ777L�4I����$�M��k����������>��"W(
������A:|�0|||���)S����
[�l;
�:T^^nt�������~$%%��������8dgg���W�P`��h��>��}�%�B�T����k	�ZX�R���H���!99������s��~�-Z��CJ""2T�v�._��7n ??%%%())Aqq1<xkkk8::���666ptt��O?�����u��b	dbX�j���q��=������())���9�5k������NNN�qc||<&N��#G��4�8//~~~pqq��;`ee����%����\���������666ppp@�f���Y3899q�4U\\\��XRR���B��r������������	���b��:(
��w���(,,DQQJJJ��w����y��h��������
����8~�8��9���L������B��]���GG���9���������(..FII	������,\�|������z����C�b���x��g��R����U�B���3gp��ddd 33�/_����amm]����
������V��m���v��n���k��������;��u�;w������#�x���W1j�(H$�Y����vUdee!%%2��/_��9VTT�������������o^��L8;;W��w��>}�����������"�:u
iii�?�����s5����������k�Z;;;t����w���:d��l�R�/�A�������/� 33��g�����M����vvv������
A@II	�r9�r9JJJ�T*��S���a��]1`�<���5�%��y�&������$&&�Y�f�����!C��4������������'O"11>|8|}}1v�X4k�L�_�2�OPYY�s������8~�8�����uk0������+�v���/_nnn��~��e���#99���>|8�������������S_jj*�R)������p���,''����9���F��=���n���m��*�WRR���/�����ox��;��������������!*--��S������z���~��U�����:uR���?��V����p��Yt��^^^>|8<==������P;������b�sY����O�<	���U�V�����������@�W���QYY	OO��1�[�n:��LWii)8����'O����#��������K�.��C���]���|�2���PPPP����Mf���Uwz[�l���;W���u�V����g IDAT�R��/���������C8w�����S�b���h�����2,t!##_�5���TVV����������������eNHH��S���c���z������h��y��"""��sg�-���r9������(�={C��.@��y��7o�DBBB��A@PP�����gO��g�A@RR���k�������~#����r1���(���w�=���=z��L>r�Ht��[�l1�;�7o���;���_���������G�=��� HOOGBB�?�'N������D�6m���)��dX�z5v������#88AAAprrBEE��?�S�N!))	�F���k�Y���3���WM;)((��t���yyy�7�>���������!C�����7n &&_}�JJJ����b����b�M�j<6n�(���
�����3���D���R�Y�������^^^����0i�$����:�7--Mh�����/���/]�������'666������W_	���z�QYY)$%%	�������(���_X�~�PRR��,�&//Ox��w���~Zpvv�-[&�d2Q�����W��}�Y�E���o�)ddd��Ew��z��-���k��]U�J�����
������� ����Byy������	�������������&�X�zU�HS,�E/�D�(�����=���a/�5vTQQ�7V��� (���C�����y%)w�������������s��g�s�����k�a������(//��Y **
^^^��xX�`|l���/���<ZZZpww����������W�^a���pww���:v�����'����}�F����������[F5p4
�@@nn.6n�


�����?�@aa!��D�y�������6������ ���bbb����]�v1n[\�|������&��Y���$�%�(**���?����u��!;;�mYR��7o0k�,(((`�����`$22���PPP���?~���j������~��������q��At����?���$��6222�{�n��������Cii)������(6JJJX�r%222��=�����
ccc�Y�����UVV������O���2z���m��!--
���sxyyA^^3g���$��C�i��nnn.V�\	eee8;;����f[R�a������G��=��mYr��W/���a���R��Rw���������l�2Vf�����$L�4	����2e
^�|���ZIOO��e�������"�I�%%%���_��CX[[�����(���r����g���������QVV��,V�����y������k�"77WWW�x<L�>w��eY���s�����


�3g�h&���W������<(����h�������������#""�m9����������R�'���.��ZLL���d.�}�������c��8r�+)��	WWWhii���Sl�a���bl��<�f����cvv6��]>�����K��%������B����[���kW|��W�v������P�K�.�g�����'�����$���;���U�

��A������+W"33�e����� ��L�<YTbq��M������
���gY%�4�@����6ltuu������F!�r�JQ}R~~~������������p�k�������[��������`���������>�*��_���)�������.]�����R��,���;xyyAEE���������4����e�<##���PQQ��;�����������cPUU����(-�T�����Q������/��}hhh`������H�_���3����U�V���%%%��q#x<��['��&G�h6��P(���;�����K�B �-�1bbb���cc�g��>}
eee\�p����F�����*�wll,����x�b�jn(QQQ033�����3��0�@ ��+����-[�HU��4�S�L����9��~���Wall���#55�m9b%  ***�4i������������'��������m9b����044��Q�������R���|>^^^2[�������AAA�/^�G�ptt��w�XV���"�������LLL�����o����a��=�^/--E���q���*���&���{PWW���+�-�A8p<;v�hR���DGG�����-iJ����[�n:th��1+,,��i�������`��0Nqq1f��



\�r�m9b#00���X�hQ�Z���~�x<�� &&=z����e�)�D�0v�X������S�N���z��f9����<=�6�U�022���[�z���>�?|>'O���z���OOOt��w��a[�����F��~�d}��������+�E���sPVV��E���"���_�O�>���GJJ
�r���7o`kkkkkQ���RZZ�I�&U��9~�8�|>|||�\�������;���D��?��JJJ8|�0��8$I�tO�>
����-E�������]�tArr�g?��!())����PW?RRR`aa����Z����c��I��G}
�X�httt������KXZZb���R����{�.TUU�|��&�����R,\����2�p����"�=�{�Fzz:
1{�l���6�>y��1())a���>�mhhhHm���y�l��g�(++K��*q"
�r�Jhkk���g��m�������W�^������Mn����������y3�RDYY&O�333�y��m9�PPPggg���_��JB��N��_���g�*<e-�����~�����������`eeggg����/����'���qqq�����9s�l��h�������������kTUUq���j��������%���pO���������#���ejP��E���nR��BE���YIq��!������8q|>��.�����������?��R'�����G�?%%%HLL���	�M���&���acc�#F@ ����������{�W9�O�t.\ccc��#�e*nT5����������#G��-EjHNN���9f�����:QTTGGG8;;sG�?B�����������.++�����g�j<xjjj��$l����AEE'N�`[J��������P(��'O����E��-�5���1l�0���YYY������y���4�T��q�Ft�����Hk���JJJR{di������l�)��HKK���	��Y���Z)//���;QTT���c��y�����M����1y�d|��W�^����T���6��:�]ZZ
WWW8;;���O�<���J�y�#%%%������rrr����:`���lK�M&�������:bcc��"����:::��o����t��	[�la[����� �����5�{�F^^�R��P��'���^j�	��J',��s|>W�^eQ�ts��u���	�BL�4	��������7o��C.�����rxxx`��(**B\\455e~�/G�4�@7((JJJx���R��%K����L��h���B��]�O�Q���H(++#  �m)UX�r%LLL�}M��())��!C���&u��O�<���2��9������jjjR5��s�N###iii066��U���%uc��!pwwGyy9�����e0� 2�&$$@YYY*���F�B!������"5�B�_�5��+5����U�qqqlKq��E���Im�@����C����v�Z������A����:c m�_�]�v��Z�����#**
��z���?���,�%77VVV������FFF���aY��t�[RR�>}�`��lK�)���ann��[��-�����;s�K=���_`aa!�Y'''CUU����>��7n�-������G�-C�
�puu��������lb����~���
kV{7���Thkk��7�|�
��8�D����g������
 ::<����@QQQf7bg���r<��OgUGii)lmm���
��?����.�G"������R���,���	===;v�5
��������0]]]����������!&&���066��}�����2�BCC�YC).>===�fR���``` ����?������b��r������Eii)kd���'����5�O�>�����Y� �������WZ�')��9#�ccc�����aI
��_~A��=QXX�����������l��`�t�����C�\�#k���a��9��^�`\\\X���

���6+,O�<���"�ou#000`� �P;;;�_�^���K�.����%���~x��y�������k�P^^'''��70s�L�������	d2�]�p!����&��7o���$~�\tt4���+��m����a����)
1`��[�N�~�*�����$^:p��!s{3@�����%��������aee���5�O��999���BPP��8���\��<>>>�����v<���i�����������sg.@b��#G�f�$AFF����f1\S���E�O�����������'v�M�
6���B���������w��0d.��������d������K�����������f�����������,���������\x��5x<�>}*S�N��q�$��9���*�=��.�#��o���i�����S\\sss:tHT��s�N�eq4�
to��.@AAA��������2����b��)))����D��^�f
F�!v?�����K�60))	���HNN���F||<���*6QQQ������FXX�����XiY'88jjj�����k�������b�eq4�/H�X�n-X�����K��49���IEE�N�:%V?��'�n���.V?��V�Z�O?�D�W�������k-Z�H�~�+s���+W���g���g���4n�8����������1��o�.6����3f���u�����IIIIl����G��?999Q������l��h(lG�u%<<***���c[J����3055���B�����}������

���[����Il�9>�H2q�D��OMM����T����x��9������/������4DFFBEE�����i����@SS����000��P�QdfFw���4o�<���g[J�������-[���g�b?00��=Z,�9����K�7o�[�N,����i��m�t�R���������s���(���m��#GR����b���������h�������i}������Fk����3g����~�3���dddDG�%RPP�3g��-����">GRRYXX���o����-�Is��Q:|�0��u�q��
���G��?���m��QPP@:::N&&&���������������Q����|>m���Q�������E���daa��m��������+�}��Z�l��M�@@ZZZ���""������RVVf�>���|�2M�6�^�zE���;�;w��\���,�z"3����4r�H.��������cJHH`�nJJ
��{�����]���o��F�M'N�`����/}�������������T^^����/����JRSS��W�2f������K266��G���1c� WL:�Z�nM7o�$
����eq��tO�<I^^^l�h�o��\]]���������%�������///���%�P������BCC����1�5��o_�����7o2j����O%��q�����1{�'
���\[���c����/)))���3����-���H}�{��]������-�����E��'&�Z��������/(,,�1�'N���C����*c69j�� )==��]�F�|�
c69jg��	t��E���n��w���6o��I-Z� [[[Tr�����={���������=��$�z"�����'����Z�h���f���I �j�Kdd$�����!C���y���h��q���s+�������;G�����;}�4
8�444���yttt������?�h[���������
�����	HNN��5ahhH��w������a�(%%�^�x��,�z �����W�=W%L�-�������+W���a�[��Q7\\\k���4z��9
4�{u���������������Svpqqa�N788�
DB������2"	���A�����uk0`�-��Hu����;JII!kkk��4;�
�y�&9880b����������YXB666��}{�q�GGGF�byy9��u�P�Q����*@������@QQQ��E277gP%GM8::Rpp0	�Brpp����%q��t�_�Nvvv�Ih,0p�@�w�^�S�%%%t��m���gHG]i��%�������a�=�z���� 222b@G}���;	�B���i����(���/����n��I��$D�.]�U�V���S�C�}9��T����=444H__�����(;���'mmm���cHG}`*H
�fY����"""(77�Qvn���$�055�>L�7o���������T99�F��?
n�{�d���*����h�eq��to��M���g[F�e�����7����2`��F�����N�_�&�Tq�>�O���t���F�i�}����222h����q�Fz���������Q����o��$
���[\�+a)44�����O�>��$�:"��nII	%&&r5H,bnnN�����C]�taHQ������'������{�����l#&&�����"��b�t���.\HS�La[J�t���QmKfff���L����AuMq��=z������R\\�>8���.����'555�9`������9C���rvv&;;;�e�:t�P�l�����2�������������b���m[���������e�l�x��LMMVV=��6���PXXeddPFF�Y����m+1�&&&����b�����AU���?����P\\	�B�����1���x211����������s������ScccJJJ���"211��g�2��C<H����/����m"���)33����h��
���3�%�����������X��)���mG�g����t""���$---""*++����S@@c�$I�/��65QXXH���m����n�J%%%�ojj��6|����������8����6�j���������o�������X��G����"���������z��LLL�a��\�[Gi����x�bV�_�|���������5�l���4���ge!Zm��v[
�B�r�
u���._�L������I���dggG[�la��"K�.�mS����|�rrvvf��,�!G�7�_�xA���$'''��d�Z�/�O+����)%&&J�C�G��t����������*���s���������>%&&���n���r�J�'�%%%Q�N�X=����b�-MMM)&&�.^�H>>>��M***"WWW�4i���$//��?��������H���!uu�j�g�/Jk�-]���B�����U�*�Pddd�eL�aZZ]�~]�����"UUU�q�EEEQ�N�����R�D�w>|�@>|����SYY;v�Z�jEc���r�tAA�?�"""�����v�J���:��/''��������dhhH�����������(66�Z�jEVVV4f���.JLL����R�N��=b;99Y4a���(�c���I��FFF���+�����}�����{nG!@jgtsrr����-Cj����X����Hyyy���&M�Tcz977��)Of���#�9s&%&&Rdd$}���4y�dF�\��������s���S�����\_d�����_|Q�����4rww'�@P��L��������D�w����W��'h��YT\\L�F����<����E��f��z���m�Fk������;w.YZZ�O?�T�x���p������rZ�z5m���h��at����]�r�,X@���4u�Tj��=
4��-[F���U>��Y:� IDAT���7�����]�h��HNNN��������c�������O[�l�����<�X�������I��|>_�����|��*�� �3�����������������CV|������h���4a�
		��^\VOYY:t��l�BFFF�z�j����>P�N�h��)4w��jgv���B���3�������������yyy���CNN���oOyyy�9���4x�`�6m=z��B%�����-Y�����KZ�`EDD����E~�u�Ffff4x�`����P�N�h�����uk����i��-�e�RTT���;S�N�D����h����s�N�0a����C�������������W����D�N��������={���%eff��={D�=x��<<<h���"[<�>L�n�����P�x���MVVV4t�P0`@�����D�����Hr<UPP=�(((4j7�!����;3S����),,���z��}���ttth��1��gO"���:u��_���>�P���������n|.H�:u*=y��\]])  ����8���+W����TTTh����OF�5,m��6%"�z�*y{{��
h�����Pff&<x��B&L���B��m#��sm���I���4j�(���?��b'�,�i��^3�?����Srr2YXX�����~N��\;����Hs���m��Us�����bm���-d��	U��A����#<x�����_�~DD��M"��{*�e�<yR����M���23fL�FFFdggG3f��A�U����v���'777��oyzz�R�S�N���[W���]�v���L{���M�6�{�����
utt��?��1c����g+�'|���r��������K�D��xxx�Nv�s��h�����S������Jr<UPP�7o�������
��t��'Xq�T��>v?~LVVVt��5Z�p!������i�����~"���V^^^t�������������/�/


���;��������'���6������9q����'=~��6o�L�#F��������g�H���M���DD������N���#999JMM���T"���|\\m��������@��������<�]��F�E[�n���r""*..�����A�o����IMM�Q�F��E��C�4}�tj������X_)	(66��6����M�6Qxx8
2������J�1�����W��zAA]�z����k�leeE���t���*���:99:�<}���"""H__�PAAA��tuuI 4h���PPP����������������v��)�>?�4`r\m��^�>XZZJ����o�>Z�j�������)99����{Q&i��e����=U�����-��R;�[\\,�bx�RW�����NNNNdeeEG��d���{���E?��#�������GEEEt��%ruu����?�j�M�6���t�B!���S���GD�q����[3�%..�������L40����6n�H^^^��gO�9sf��4$mZ�6�������tJKK�����M�6TPP@#F���g���h��%dggG666T\\,M
��mS�kF ���=���QPP�h�������P�^�$�k+��M��w�g��---���L����_���$7����`���U�SSS��;�?&�PH�����nE�����:�������O�>%������k����%K]g��Mz���g�bii)-Z�����G��������l��^�>���D�/&===����
6���{�����>f����C��m�T����=UR�i�B��?�t#��n������@�~�J]�����)##��/_^���:u��#GJ��������C)((�������B����j��]��c���u������+�^q���{�	t�6mL���9��ZC����'>�OQQQ�~n���@dffFD$
6


��|��mS�k������8��{w��
��������� N�������5��w��������i�����%5����Fee�*��T��];"�Z�n�XTV���PXXXI���&}�7l�Pg;�!??�LMM����5~f���t��e
�Z�i�1��
��2>V����� ��.]���7�����������9�~�a+K�Q�6��D�wE����L����OSW�������������Oi��-�0���dyyy���LU�OL�v��o_)X������D�)8>|h����i���kM��������E�I�iSmmm���n����K������\�Bw������E���m[���mH����9}�4�h�BT.�o�uU]�\;������9r��Z�=yyyV����Uy��
j��
�����T��g���;ZLLLH^^����j���������/��Baaat���J�>m?����\�
+���{��W�`��{�8��/
d{L��R�������U}��y��233IEEE&���\g�?>�����+q<��������m[����h���+m
I�J{�~�
���G���=x����}���!�hhJ������o���!


�1Im�(
i��1�n��*A.��'��a,..�#G����Z���h��%y{{��M�(""����B��._�L����n�R���������/���~��V�XA�.]�v��q�h��}5�Y�����m�����C����U��SPP=�1��UC������{���|z'e%u�te�
t%�GS�������#999*(( 
�!���!�w��:3�t�=�����n���Trtt���,
���{������~�����MiSq�������.]Zc +-��4�m�s�T��s���(//������bE��I��}_^^^�X7l�@NNN��4��O?QZZ�={�444D������E^k�����P�1c]�rE4��Y�f�P(����W)h������������^?r������3g*iY�x1]�~�/^L�{��t0���1�}��5\q��iZ�bE���{Tc�cC�uq���6�J�����q���R�*++SFF�X}0����>�O������KJNN��;V�laa!}����>i�������N]�t��/m8���5nN.''G���5�}�n�3fPLL]�vM�}\@�)7o�$++�=4$m�T�������c�R�5[������b]hH����100�7o�PAAA��V�&33�Z�lY�&ss�jw �@YY��^L2}�tZ�t)������&]�p����)""B4F=|���,YB������L�/�c�����M�<�����[SXX�]��@���#%%%
		!uuuz��y���y�����������ICC��_�NYYY����*�e��-����q�Frrr�������9=z�����j=H�!���n�Zc?��x�]TUU���i�>���k]\e%���������NFFF�;�J������cddDqqqb�Q������K�.U��q��Qzz:�v���KD����9sf%�3����D'+))���$222��3�
4������;����u�Z�lYe3����������hT�6MNN��������mSI������s���n���YhI��������53o�<*++������j�HKz�7..�

k}P��/��
������#4�|������


�X�����^�J������JNN�k��U	r+h���^��=zD�f���#G��k��������g�&����o�>�7oY[[��'($$��I��-[���K)66�-ZD���t��QZ�d	�����bm���A��������l�������0uof���X211��o�R�-D3�����&&&�����Y�x1����/^Lo����^u������S���3m�4rqq��k�Rttt��^�~��|~���W_}E_|���sG���7o��������W������&��oO����������PYY��~��#G����5�{���>���������YC6664c��g�jO���M%��/�������T_����������i��a�b��*�f>>>�YQI�`_�xA���
����	����=@�����woFg��������z��Qk��	-�����[�zT���(!!�A}������������k�!�cE?�m�tK0�����
�����MLL��L��z��t���T40��b�k����w��w�Q\\)++���;���k�m�6���K�R`rrrt����c
:��N�;w�W�^���m�����b����r�J"������{�������V��������O#F����g�����o��I�h���4t�P���%wwwJOO������jm���M������A���i�������Y}��>�LEu��E��q#
6��N���t��=���9::��K�����lmm���s��4�/���������T�Cm,��4�5K			���HEE���������L�^�b,����k��^�>���L?���x��������t��Z�~=eff�������'���Ls����;wR`` )**J���s�{�����HWW�}o�� �R�B!��k�����}��%���PVV&1;�-//��s����s����������`�����1c����/)�Hzz:����'O����D�z~~>����%
����J�>G]�T�ddd�U�V���o"""�����(��O�4��
�������!���x��	RRRPXX�������8|�p�l�����_gDOaa!��7���0g�$%%�����M���@���6�����G@@#}��4�Zo�����77�7n�{����3gb��U����?R;�+''G]�t������?���P�v��Y%%%���OC%��������+t��e�}DUUUt����c�PE���0u5���255�W������Pjj*}�����;[��mr����U������x��1-]��Q6,,,(""��h=����s�NRQQ!ooo*))�_~��V�^���qS"22��v�������Qtt4�9����)""�lll���k���cC`{L
mu����J�pH7R[�KD4`�
		a[F�������C�����SHH#{�r�����F�a�v��W�^��*�����K�����={6�NE_d:x� ���o�s�N��{7:t�rk��}���N�j=]��y�������������{dkk��$�:"������-�YMB��Q3D�;�}:��`"�%�n�lL��-��srr�[�n��9������������6���;T\\��G	S\\L�o�&�s�u����>���T��������3r�+G����X8`��������������V�=t����7yX���#�����P�Qn��MFFF���J[[�:t�@���#'''��������A�5q��]���#�y�f��&sH'R��������2e�f�� �-BBB�������}J��})))I��d���������,��x���H7o����7�8>��+WD��L�9$�T�DD...������fENN��q��9�
����BCC)33�{u����\\\���M8p �9s�{u���[��M���#���T��3g�����m�������������N�<�h��#
����<<<�����2���&L�K�.Qvv6�R�
���dccC:t`���������S�8�������?O���g�������2f�����������K������{���K��w��@ `dV����^�|I���4a�:w�c'OrT��[���c)���9::���2��8����:::dccCg��e[J����������I����s��{wF��1b��&�!~��������>��n������E	R����ikm��!:u����9�?��5Qq?������C�H}�K�I�����A�F�b���_M��?��Q��q���d9�������Q��U����8q������Q������g<�r��q*//�?�xt��������8���c��C��D�;z�h������X��4y<H#G�$F��m��F�M�b�.GU�����������'��c���������'2n����������K�������gIOO�,,,�ikkKm�����;v,������O���?8@VVVdjjJ��#wwwj��-��8�� ��/X��������clKi����R�N������`�$&&�lll(!!A�N�jjL�2���mK;w��};;;�����Q,�9>�����B���$//���C���={�������rTu����,YB�|�
��7m�D���DK�,���$.��0���dddD��#������ ���7��8��������C^^���lKi��[����777��p1���yyy$%%����K�������R��h����`���b�_RR===\�zUl>�;044DYY��sss����������xx���~�3������
`��M<x0��8����M�>����{�������O��o_�����$'''JJJb�<��h���TXXH��^�z������b **�@����������_��g�r���	kkk�6m}��wb��j�*z�������9s(//�+
c���R255�]�v�������������lK�h,��"11Q��U��M�6���I"���u��I�Ws����PPP���/������011AII��}57����|�r��������7����q��%�����ddd�������x��-x<"""���9�e����@(���~C��}����d*����g����mM����CII	�������(**"11Q"���9s�D|����O�>��y�D�5�^�



deeI���}���K���A���`bb�S�N����E�D��M�6�O�>(//������o������C���B[[��]c[G#��@777:::�x�"�R�c����3$�����F�������k�$ @TT�C���'N������r|��W��e��|6uV�Z����C(��W�����K(--E�n�������oS���Ct?�;w.F���"��"s�.�:u
���(,,d[��S effJ�oNN���q��%��m���������Y�fa��������_��_?�H����#��|�}�V�~�"/_����"�?.1�~~~��aXXTUU���.1�M��W�B]]���x��)x<� ���@�%K��-C�)((���1�;����'O���yyy��o*Hr��dggCSS���4�/^@QQ������9s&W�H�B!��E�I�����b�
�?��a���2�2iii������P;;;l���mY ����W���������-Ef����������8r�H�?�5��Nhh(�|>�[B]]��l ��������]�����a��=�i�u6o��.]����@��cbb������t���6m��Y���C���)S�w�������YV��2����?444���;���~~~���e=����}}}:t�U�H����/�R0w�\�����[�L�:b�o�>DEE������G���E�������g����a�����3rrr���())����fM�,�n�:t���O�<��AC�]�1c��MB������A����PTT������"3�B>\4�6%%%���/�.]�������������������_add�������������=���P777�3���,;v�&�>��k�������s�����������8D����"XZZb���lK�	222`nn��7�-���m���1�3����e���[7���HLL���
��=��� **
JJJR����������M����2'Nd[
��e�<�c��k��_l,+DEEAUU�����c�r�k� 2�������E�g��������r���Y���wonq�g��w/ttt�r���(**rG�~���hiia��]lK�BAA����	&H�8!-�B|����������������POOO���_�4J��������m��������fY�4�@�x�jhh���#lK�J���������,++��f�� IDAT��1p�@�-G*	����T�y\�p����)M5������/lK��>�����-c[��2�|��-=}�4������6#G�����{CCC�_����


������C4�@���>���� ��H������o��o_VV����B�������K����Z���0��|����CKK���lK�*rrr��W/L�>�m)����������Yg����A�N���������w/���������|������	���lKc���t��,���fEEE��s�ee��I�p����|����-E*(..��1c`ii���������lX[[������m����g���e����7BKK���lK�
���=z`���2sLktt4���X��L�
�X�t)tuuY�����X����x��=�kk�f����'���������������,+�'M.�>�(���5�����|:2��:??��
���}���:r�TUU���zs��Q())5����Y�Y�f�L�[ABB���1c����$eee���aff���_�-����=������CYY&O�sss��
Lp��U��|8pp��E��|�9s�ee��I����3t��K�.m�*RSSaee��w-))��q���G�f�E�P(��U�������(��4����f}Cy��!444d�����TXZZ��o�����1�����������So|||�������B,[�jjj2�!j(B�;v�����hw�#G��������bY�$h��.�y�pqq��������@[[�g������r��?ZZZ�q��r$Fff&F�	333��]�����BMM
?����.������k�dsrr0x�`XYY����l��111�������������s��Q(++#88��MUUUx{{7�Ejiii:t(z��!*5������*�����:I��]���&ooo�����"�������S����(�
,Z���/R{��������ZKNN���z�����������\�7zzzM��*
����l�A?~|>+W���I��8����j�*���#99������mr;���_�����	PPP���\�;FFFM��r�N�t+����_�$g����1h� �����v�W�^�W�^ppph��e�����ix<>���PZZ�E�AUU��,���;c���M��<88ZZZ�6mZ�z� ;;�}�:t� 5'H2Ell,�u�ggg��������/���<���ez�RRR���MMM���=z###���I�vp���������5,,,���nII	6o�����g7�]
���0�|�x<���4����;w��GXYY!::�m9b�������.\\\���nff&�N�
>��={��-G����b��������P(��'���	ww�&[�&��?@WW!!!>�NNN000�������D���7���Q^^�]�v���5�>�Q=�*�>d����������?��-����u���Dxx8�r$JTTlmm��sg\�r�m9
&33���PVV��;�|Y��`�����xX�r��>�U�)���pqq��7o��$Q��S'888����l�i0/^�����ahh�l�b?y�$TTT����"--
����������/�
?Oaa!v��
===���W��add$����.]�p[6s�]�[AZZ���[��|,[�L����>F�8p�I��5�P�C�AUU...2U����+V@II	&L@jj*��X#::������>���'3�����q��9XZZ����Y-��7X�x10u�T�Z@�I�&AQQ�W������������JJJ��s'���P\\�����s�������s���>�����[�BKK����x�"�B!���1{�l��|l����d�8N�
t+x��	������ooo�}��mI5���b���\�������;v���-d����4�\�JJJpqq������$5\�v
}�����:|||�����r�����c����&))	���h��=����z�7::^^^h��=�L����d�%�����W/XYY���
�())��#G`jj
x{{�z�wyy9���0e�(**b������

�}�vhjj���III����.�}�[ALL&L�yyy�;AAAR�h�������`mm
MMMl���I.�`���|l��
���������;E�86)++�������	yyy�?��=c[��GGG��G��0��+WB__���kV�&�!%%������"���q��)�e!??���<x0x<-Z$��kLSZZ�����]�v����E���b���PSS���%6n��������+�?>ttt��cG,Z�Ht�x^^v��	---8::����b��!{p���x��
��[333hhh`��9�w��Doh999������+��k����?���kv)��RTT���O���m���������"++Kb���p��}��7ZZZ011��5k�Y�z�9s�@CCfffX�n���]MII��={��o_(((`����q�F�<��!ddd���~�W_}EEE|��w�~��Dg�._��	&@AA�����o�D�Y���'O�D�.]`bb����������p��YxyyAGGJJJ9r$v���[�n5�����			�|�2V�Z������/����������o�>���S,\����pvv��;w��9�&r@�������������'{{{rtt$GGG������1�G ��;w(88����)22�z��I�|�
�;�444��IKK�?������(""��w�.jC[[[j��=#~����EmJ�����#G������0��9RVVFW�^%___�|�2���������:v����>Phh��_�~M OOOrss�v��1���G������Oo��![[[Q;ZYYQ��-�SZZJ<����w�������������
�t��%:r�]�z�@^^^���Jm��%"�/^���7)$$����)>>���oO���dllL���$//OJJJ$//O�Z�"�@@���G������AqqqG�[�&���$rpp uuu""JMM%???������_���w�qQV�������������(���&EY���/ij�X��V���~���q�Lz\���4$��HD��}�~�����03�t���������z�g��o��3f�g��M�M�fWt�$%%����/���.@.������___�n�666������lllPQQ���B�d2C.�#--
���HJJBJJ
�������:��������_��!���s��y$$$�}��������/|||��cGV~���������	
Y�"''IIIHNNFJJ
�����U+�12>>>M��-���
����-�����QY�������������`ee�V�Z���r�2�EEE���lpU����<������~��A,7�k�8=z�����#33�;w���/�S���aii�����=�R�r�r����������{�����>���6m�4�+?�H�R������w/���/0��o��=all���*�����B+��QVV�V�vvv������\]]Y�%%%���c�$>>�
�[o���^{�xr��+�z���#�������������W.�C*�����5fe�vwwg��S���n�W��!��e������V~(..FYYlmm��deexzz
��]�vM�J�8TUe��{R�R����\.������`mm���s����|||���33��~����j��������� �����l����nnnl�������pttl�7j�<x��}����/���D�.]�?�~`To�)))HHH����ooo�$���m����]���p8z�����W�"99Y��"�`ii)�8177g+*�����d(,,����`e������sS���+����pJee%���Q\\�T���"���D0#occ{{{���7���
Wt9���p8-�����p8��i����p8��i�pE���p8��"��.���p8�E�]���p8N��+����p8�	Wt9���p8-��r8���pZ$\��p8����H����p8��i�pE���p8��"��.���p8�E�]���p8N��+����p8�	Wt9���p8-��r8���pZ$\��p8����H����p8��i�pE���p8��"��.���p8�E�]���p8N��+����p8�	Wt9���p8-��r8���pZ$\��p8����H����p8��i�pE���p8��"��.���p8�E�]���p8N��+����p8�	Wt9���p8-��r8���pZ$\��p8����H����p8��i�pE���p8��"��.���p8�!###F���[��Z��x�"F���6�(�zb�P����z����@�>}�effb��M�����q�`fff9@.�C&��+WWWU}s8p(..Fqq1F�����B�&�%�Ss����/������`ff���PL�4��������������J�(**BYYV�X�V�Z5x�>��m�����z��P(�{�nH�R��r<}���-���u�a��6mbeT\\�Y�f��������<��`JJ
���1a�t�����������	8{�,�u���"q��'''rrr"KKK����������mmm�����g�K�.m(��y���i��e�{��FK��O?��>))),�I�&���+s[�zu��KC�������O}��%��o��'������U���G"��T*���9����wi�����D�����<y�(i���g����b������#FP���	Saa�Va���)00�lllX9�;wN��jN<k�`NNu���BBB����Fu������'���O����4�8=i��999�����5k����3���<�����������d2���}�='%%5�������~�:���0{�lt��	��9>�h2dgg<<<p��!������R�m��e�f���T���\$&&b���066dee1�������M���%�Ssc����z�*�����?���O�<����Z�QYY�^�z���s5�i�e��S'�:u
������@���7J�������Dwww�:u
�fs��\�|�V����=��8HDx��W���c8p����h���sssDEE�����2eJS����&��+��������c��������,_�"�����7o^S��,			�����z�jddd@*�6�YYY�����k�0f�xxx��������b�X[[[8::���K�,��]��?�iaa������wj.(
�={0l�0�D"xzzb������>�����s���������277��h����"--
�-2�<EEE���?�
4�r��gi<p�bcc1e��n��F�����S�N�����s�����7�8=hrEW������DM�]�p!�������A�5�t����t��?���e��D���,�����vf51~�x���ft9]���Fqq1��C���op��
0@�xv��� �5&��� "��������WC����
���D��q����-�H$b�W5�����?��t�RV�9�M�������O?�\.������OM�;;;�(i)4�����R;<�-���������.����>}�7onj1���fff�PXS��G,�,��@���	���-�3��0;v���������W����6��kW���"--M��������.h�����r�J��;VVV�?�������;p��U��rc��1j{eq��!��s���pvvFpp0F��]�v���s�DX�~=�W���;w���A�a���,���������O�6
c��Aee%����\�\���R;v�����dee!((�������\.���{q��-$$$���:t��)S0x����f�����������������l���Co9F�������XDEE�������B���1m����*����z�{�����d8z�(���KKKt����i�E�w*((���q��5<~�&&&������7�O��:���H$��k�_��\;;;"++#G����c��o��Qeee��?���������R����[�n�4i�Z���;����������_L�4����+W�`���8~�8[B��u+N�:�j�{���u��T��:�A���k�������P(�������999X�b�����{w,_�\0+�~�-�����'��V����?���K��w/n��
333L�0������[���5AD���am���]�t��a���o_5���7]�]�k3�����cuq��@�~�4����t��w0III���l��3g�`��-���9s&����h�:u
��={���M����c��			������/�Y�P�eee��'"44QQQ8z�(�����cG��7Ocy�h��n�6m�����DDTQQA3f� �������74`��O�._������������Kg���?����>}:�]��������'������N�6�<==�����o&�����S�N����������sgZ�f
;�;u�TA|��'www@���>����O?�D����^|�ER(z���+W��aaau�

e�����w����];����s�'�HX�U�V���Si���Eg��e�2h� �yf������	&P���L���C������hZ�l���7n�����***X����
%%%Q||<�Y���b1�����u�a���C�Z��-[����I&�Q||<��9����+��o��Qqqq���G����z�j����[�n���[������������0}�M�6��m�^�h���`��|�r�i�;w�,X@AAA,���G�8-Z��9�OUrssI$1����O��'=z��b1����fnn.u���-ZD�7o&4`�A�g��a�%%%i�e��aU�Y�|�F�+++i��e�^~�e�}�6���/��}{����s^�������}{����Z��bbbh�����kW�D4i�$��}���������t�W��cu�P(�����?����>mN���P}����H@...:��.\�z�lll�������L&&&@}���'NPbb"��w/W[;RZ���gO�iSHHu���N�<I�=���X,�[�n5�;7���6���������V��KD�������;w�����?�(9�J�����+W~���kTt��W�U]%��mc&|�B���d2�h����_�DBfffl�QE�PP�~�-[�����]]����z�[�Pt��mK�����}��5����Kja"����������'N�`�����A�)%%��	�/^LH$	;ggg������������frK�|�5��HKK#+++@���������G@����W�
�>|����?�:MUV�^��8x�`�~�c�$":|�p���R�X�p!�m����R�������O����JKK5�]�d	 kk���p��F�'N�H���_��+�gt��)���H������TRR"pOOOgJ��q�����7%�����i$��^�*o]���3���Z�j����7����}�����3����x����.bkkK�o���|�}�k�D�];����3-���'"�C����~�m��oc���}BBB0l�02&&���������������M�rr2�����W_�M���~m�J���2888�g�������M���+�`������9s��������:u*`��m���}��E066���>���FISJKK�L��i��='$$�*�U���/����c��Q�~9r'O��1.]����pss�{��'pS.G�<P^^�\���x|��G�t�JKKTY9������@�|�'��x��w�^�q�����3fff��?7�L IDAT�`�4�K���m���o����MijM���������;w.�?���m�P�����Y=��}��S���i�������w/��O?����4���;z�h�%������^Pe%@9����T�e\��m����JWy�����f��[�C}�C���9##C���T������HIIa1M�<Y��G��e2RSS�jGfff��$5����rk�������C�=�����4��w�}����>}���LJ�N���r�U���SU�����NCBCC���i�0m�4�\�.]P�t��E-�s�=��������������Y�0n�8���6��I������dT���>������W����9j�(��ty'%���g�������Lq�g����/��:�u��a��u011���/BCC��'�������7�tI�6���v4;v���������HOOGBB233���6��~���������
$''�g���DLL����K�.��o��WPP��mUUbU��?����dM����Om.������j�2���?;������#F����Dm��!�+1T��7}UT]C����7h�w�*�����i������+��M@�R�����\�v ���)-�[G����XYY������8q������1�L�����H�F		�W���p,Y����8|�0��
�={v�v�#T'55����___��<==!������6ZZ��:;VM�����c��g�T������{[�l�/������G�P(�������P�!J$H$����f�O�|�%��HMMe��]k��v���f��6��YPP��7o���T��7o2�[�G1J�����g�bccQYY	@8����o�899!,,�������$+�{�.���/U��U?���p������|��_�|��7M�6.��C�+}�WE$�;U�o���V�v�K=�###�z�TP]\\�����+�VJ����jG�WjT�R��hJKU�_�vm���F���#�����n���q�����.���b��I����g�}��g����W�\A~~>V�X�vR�!��4q���!��WPJJ��;NM������Y���/?��&O����2������cpss\�zUc�cgg�#G� 55g����7p��$&&B*�b��Il�M�|�%��P�P��jX�����"!!...prr�w\
Y?o�����>��.����_-���AHH�@	R�
���`QQ����7�(u��U*���b���sUW�mV���	]o���;C�+C���jKY&���NU�\c�
����7�*�CC�Tt���T�V������D��o;�)��XYYi��������\�������c���055�+|yy9�o���'O"--
��-���q��)���a����%<]Q���bmm�����-!jB��oh��������1��%�g����������o�8e2�O����2�k�QQQ�NVS��P(0l�0��w����3gv�����\�v
�[���p��=����i����3\�H����N�zjjj��]���!x��7p��Q�����S��P�{�w???��())a��W�^7����_?��b���;���/���?������)S ����[7��qCm��}����e\=]eX����T
���s����joMMS�{��*��������o���V}M���o���q�0g��R�+w��Aff&u����f���+�nG������RSSYu)�6l���������W�Wlt����:���Aqq1���kXZZb��A

����V_�������������������={4�9{�,z���h�����[8p�v���v��Y�1�Z�'Q�{������.]� ""B��������	OOO���qqq�YYGKJJ�U�V����C�B$	����o��Q��9{V=d�$66��X�x���wU��3���7��qC�O��nll,���/�����5k��6�*Y�=�[�n����<�����ZRR���w�:t��gO<���8p����������@�����9v��%�)S�G�������*���������=��ie�����c�DDD�����e�qttd[SSSk��m�3d�P��������Q���>�QQQ��u�F���TPl�+���Gc��!Z�#KKK��H���}�`C�s�H$$�H�9���k��[QQQ�����N�>����9�$	sW5a�����;i�$:~�x������P��=����DTe����?gn(""����/��� �DB�}�s��cI$*,,�1��+W���	�D"��q#3�s��=��e��������^""z���������3h� ��D"a�����������nMdff
�uqq���[u/JRSS���#,\xx���D"�/�������$�H�����kUSE"����[���������m��n��i�wR�{655�c���x��?OC��.]�
��W��������W����7�����z�-�w�%��R�^i���o�M������?�~�y�&3G���/RYYs���������I"�����S�$�	�����P(���3dccC����_s��D�3!v��5"�j����$������1�������Qqq1��
�"##)22���o/0]Bh������Mnnn�s�N""z��W	M�8����K����~���'��*����Oi���,��c�RFF������s~(����=999��_M���DD$���I��mV�������������A"���>��6������{��Z�i����������$�&S�D$��odd�q�������x���K��R�
g���M�0����
�h0E�������������������lll���\+��C��V�Z���988���5���3����kTt��}���������KdnnNvvv���K�����GQ\\�Z<yyydjjJ666���@dkkKfff�NQ�������S�����lmm�������(66V��*�y�Z�"[[[��lmmMfffj"�O?�D...�������p�B��� �<J���������b1���i��w��deeE������H���$��NsssA����������;���Z��|���)<<�,,,X�~~~�d����d2��?�u����'www=z4egg���g�{��daaA@�%)FFF4u�T3f988P�.]X�U�V	/}�M.���Fm���Rhh(�i������������i��A��?44T��vvvdaaA����9me> KKKj����Grs��DU}YXX���Rhh(���������~�5�D"!����a�����-Y��.\�@...���E^^^jm���+���F�;w��m���
���{�����#��������SK���;4l�0277���`���3����t��m����������]�V����s'���PLL=z����G������GVVV5�Y]��������\�qAW�u��J��W����������M�S�k���>}�*=z� 5��S{��A�^>Qm��%��&������S��]�M�6�r�J�~�>�h���h�O��5���5k�o���^z	c��e��O�>��������D"������P(�����O����
���(--EVV,,,`nn�m����'O���'''�/�r�"�w����Sn��
�f�BII	rss��m[����(((@QQ���k}�L���KJJ����n�Z����7C�Q2�������-x��i�Yu0t_ �J���WWW���h.;;R��l!##����S�J
�����M�+X�a���k5a(�JQPP�v�%;;�Z�2�����,8::j�f�mo���c
���������t����0��9]�C��������C������\����O����[/[�������l��S�N�����	5MmP�>�������=<�,iR5���}�-/��R���j��5���O7���������m��Z��i�|��7������Vn[�m�������W:;v�`�����G�g�0Z�`mm
�B�=k���(**������F����p8�s��A�>}�{�n�X/jJ����w�^�y�����X�h�.]�WZ��h���lf�S�W�X�����4'N��������C�������?�����k�.��3D���(�������<cTVVb���8�<;E�P(�������Z��8���H$Bpp0������8������W�����@xx8
��=[�6�'O�`���x������o�$kff&���c���x��)\\\PTToo�����@�^Q_��������'O������y3d2LLL��uk���`��-����7YYY���#�����~sVVV�2/��p8�	///?~#G��G}����7����-Z�D�.����V����x��������,gaa!���������������~<���8���4_RRR0y�dl�����M-��\�x�/��={��S���S����p8��i��
����p8�	Wt9���p8-��r8���pZ$\��p8�?����1�n�jjQZ,/^��Q�����������{��!�m�����z��4T<���������Q\\��V�ZKKK��*--Edd$�R)���PVV�+V�zuhc����h���������#0|�p��MD��i��M��5>>>��)�����M�����q�������E2)))��	��{�FM[�|�O��M���h��s��<aaaz�'8NNN���g��[�z���0�x�10�y
[FF�9s�***j�@�g��
�~$%%Q@@����ksss������4b�rrr"dffV����Mu��bq���M�hF"��T*��}��I���������
�vyy9���
����s��)���g��t����`���P���)$$����=}}��>��6a�y�j��������'���O����$���!�C�ai��2��?�<BCCq����^����S|||p��5���[���S�N8u�\]]���077�w���1����s����D�^�p����DFF���~j�����q��e�Z��A�oJn��������P�ADx��W���c8p������Z��W���6m���gu��.������c��)���0�x�1,����>}P�
#���HKK��E�4�����0H<����H$���`��iHK>m�8G�;w�����N���MS�|�r�D"���c��yM-�A8p�bcc1e��n��Id�o��������q�N��s������o�4������uM����_������g��LMM������p�����j����6�|��q�:;v�hjZ,.D~~>���0h��������b��E�D���������|�����K����9
J�+�AAA�Z2T<����fff���R>�X����:��O������Z������Z���c��!==������jRYZR�jK��]������4��q8
A�Z]���oq��%TVV"11�����1������~
�����+����c���l/�!�Q����������o�����pqq���?�y�����I����3��e���1a����!//�7oFLL�������4�)���l����]����abbx{{c����������������\���b|���4h~��W?~���h������i��������O�:�k������x��	|||��J��yzzb����|�2
���������������[dee��O>�1Me=���CVVZ�n����7�F�T��������=z`���01QoV��o._�����i�o��&�C�m����D:tw��Avv6����#F`��]8w�D"��_���TVVb��y������(--��c���_��o�AVV�������
�������~���#11������C�n�0i�$A��|�2���333�D"TTT��5�T���������d�@\\~����bTVV���!!!X�v-�?��-l���N�P���q��:�*66QQQ��>����j�@D������Gq��]����K�.6l�����_�6�k��S�;v����WY?2f���/���w�^��u			022B�0e�<Xoy�H$�����_�\.��������#Gb���:���#G�����OM�gll,�?������ ((s���������8}�4���aoo�#F ""B���6���>�oC�����&���$DFF��J�k[7&6d�*u�X��3gb��������S� �H������gc����5�TO���
'NDhh(���p��Q����c���7o��~���!O������.]J�F�b��~�mZ�t)������rss�{���h�"��e�4H<J:D666���E�G���3g��������������W����.^�H�������+���}��t��M:|�0 {{{z��Q�&QEEu����+��BIIIOk��!�XL&&&�n�:A����3(**��M�F�����(:{�,yzz4h)
�t���)$$�Y���w/�;w�V�^M������[���inn.�D"������?���G��X,&www���c~�e�y�f�e}��WRR��4>L������IG����L����E(22�F��/_NDD)))���O�6m��k��H$�3g��UVV���[����:t�@������{�a�@�w�&"����,_������������Kg���?���?}�tZ�v-����QU�<y2u������9��}�:w�Lk��a��N������#???266���WS||<��u��n�J���F�f��]�F, KKK@FFF4o�<z��%$$������P�n�u:..�F�I�O�>�v�Z:w�-X��������=�,X@,�E����D"a~W�ZES�N��M����;Y�����n����U�(&&����O]�v%�HD�&MX�����Zf���7�|C��������������O�����O?Qxx8�_|���>�����Z�jE[�l���L&���x�9s&��+W�T>
��������5����:t(EEE��s�����P@@I�R6lEDDPtt4=z�M�8Q-�����~�o}�����Ze���5I����F?5�O[!������au������o��t��	JLL���`�66h;�hJ����BBB�K�.t��Iz��
8��b1��uK��hN4�y���~�����Z��1c��%KY[[7X<��-#����V	�/_�W%/��2M�<���lmm�����8�����U�}��i�-:�����	

�-^���H$���/����Y�^�z����/p_�f
s�t�������u&�����������{}]������-pS*0.$"aY+����Vf����,,,���T-=eY�*�YYYdeeEh��95�w��yJNN���{Sbb"�<y��}��w�p3f� ��cG*((��i����+���:����c2�������P@>>>$�J��>�+W��l�����!C���A2�����	����4�g��������o ccc�z���m��YL�c��	��y�@���S3�t��a���R3!�z�j���k�UE�m��:�	mPUt_|�E�v�����q�����m�D�����SSS5*=���T�?� �B��~��Z�l���;;;S�^�������<==i��Ujn�����������o����w���_���{{{������@���j����D��
�w����[���?��_]���O[�wLl��P����o_�9������{�&(uo4����A���DT5!�|�o��V��hN4�����Kh���������<H�������������+lV���j�o���lVV���19r����kl�III�m����d��DDD�����@~��i&���.pS���={�0�;v��
cm���a�������P5����S�[�^������zD$ IDAT���Sy���a��y@C�UK����ddd�V���KFFFdllL������t��u���%&&��?�L�������:	"(�G�����������]S��������ns��en5��TU�^{�5�����
S�G�����wO-���6v��U���_���F��=��s����C�a����o��������mBT�o��m��?��9u��]�6^=���L_�5)=�
b���ySM�;vj��5UVV���B� 222���o��&�#bbb���;j������Y������U�+ju����g����W����2��������L���5D�]�l���*�}@M+o��o[���7�xX���u�V����������75��q�F����dllL:t����,��7�=~��������111���?��?���t����$��s���`oo�1c��������

����_������ks{��7�����s�=nQQQ5�Fl��
f�����&������'u���q��u�{vvv������x*..���#}���u�U��!���HNNf��e}��%����o�0�OM��������J���	�A�N�p��m����c���377����q��At�����lX[[���@D�3g����{�Frr2�����G�����������{��4j��J��O�:ub����
�=}�`dd;;;�q����M��i�������z�U�c]]]������dff����=����8�:u
���C�N���o�!11����-[X9%''#&&6l�Snm��M
��bcc1b��o�@�ef(�JJKKq��%�H$B�.]��<��sL�����]��MLL��/���CX�n��[���"44�|�	�����W������iJ���Sk]����Z�������
�w������szz��7�����z<�����sT�sEE���MM���9r�H������
���HMM��'�,dc��)���Wt�
�^XFFF8p ���8�������������*hh(SHT�r�
�U�V����������� ���|}}�N�8h��=���n@tt�ZZ@�R���{��]l������=z@�Ph�M�6Z��P(��	��*rAAn��	����y�u4��w�������%���Y���XTVV��a����4�ooo5�����|%%%�u����1c�����C�V���� ��_1%���c���X,����u��+W��}�V��h[�����d��������L�*,,DLL`��������*m����{jj*S�k��T������C�������@D��u+��[�-[� <<�f�Bhh(bbb���___l��4�5���	C�z}��>3P�6�\f���$55������}�OOO���������s'***X�///�D"�D"����q��a���h-�H$���*u�C�����
�w��U-M�R����h[f�1����@����U�b1���to��mT?D��][�����Gk��h.4��kee���{k�STT�����-�4h�7���x���VaAA~��wU���M�(����1E���^S��������(�����L�<eee��c�����z���m�������999��GCs��M��X]1U����l����!!!�NG�p�����OA�?���=WW�kB�~������'c���8s��F�8w��e��|�	�}��:����k[�\]]1i�$DGG���>���g����+W� ??+V����*5��j���E��0�������YYY��{7��������S���7RRR�e�|������������[IBB\\\���45�3��25T���>}o�k��=D"k)))z)�u�ogg�#G� 55g����7p��$&&B*�b��I����:=U�2�L�^6���6t�m�rW^���smi�����t�T�&��+��7u�S+++����c�9+�@#��Uf������?�(PZ~��G����L��L�n����7C�#�J�?���*�BEED"�������l��ze����R����Q\\���{�-����<��w��i-r�
�L����������CTT��c��kXT+��$
�\�����n�???��������z��%�T<����X�w�y_|� //���v�I�X,FPP���s��R�?~�ju�������4�Qm���������o���'����e��a���8u�����|�r�}pvvf
	���(
�thjj��]�
�MMM1c�U3�/��2:w�����D"��=�g���?����^y���|��7p��Q����QmO�{�n�6^���Y�&"��Wu���tE�P`��a�w�<==1g����			�v�Z�n����{Z������
�����
�w��U�^�U��<U7<fffP�9~��gTTTV�X@���]����
����������:���A���B���g���X�p�`����C��={������������"U�������O�f�U���_�:cW�2<x@�"��wo<x<P��K~~>S�===���p�p�=4�a����K]�b^XX(`�I[�W������e�_�x�/_�Y�F�oJ.��/jU��yyyl�~��())�������zP=�|��7X�~=�_�������<=y���lgg�D��~��u��=����.}PMG�:�-999(..��_
KKK4�������{�N��9{�T?bccY^-^�X���3g�dy�w�y��M�<�Z�Baa!>����9S��#@8P�d2������3v�f+**p��1@�.]�dm��|��W�y��=��={�{��K�,))ALL��P��r����D���.���������
�w���3����:��n��! ���j+��X��=C���x��6��E��'�����M�}���B��	&P�~��2�6�/^L������F;w�4x<����?������K�F�"�HD���)#"�	&����Q�=]�`���S�h�����;M(m����
�1�?��B]�t!������W)//�RSS���#�Texx8I$*..&����_~�%s����I"�L�,_��D"���
�����P��}YXe������nJb��]#"���L���%�XL����0~~~���_ODD����~#Pe722���o/8U���/�?seJ���i���djj��MAA������2�J�.���DTe����������~OIIQKG�:�������Oi[w��It��q�p��>��3��c�DB����Q�D����*�y�&���Pe����FY_y�����d2���d���	=|���8222H,z���I�P��3g���Fpj�m�.�����������k���d2�8q"U��TO�����2�Rf������$���3I"�0��+W���	�D"��q#3�w��=��e���	Nt���T*%��T����n��A�����[o�Y&�Q����^�~��+			�n�:����D"���r*++#�DBs��a��7o���ok��D����&�T�5�Z��Q�J3W��o[�o�o��P�"��_~�~W�M'�\.��x�D���c��Y����>|�����|||h��Ij���\�Bnnn��sgj��-m���A�����h�"������{��������@'N����O�N�f;�7n� www���#�����5kt����d4�|�<�o�����i������Mg������������gS��������������lmmI,��������lll��������LMM�l�^�t��J���N�;w��������i��������=z���������BCC����H���[�a$	������
6�<<<h��%t��rqq!///����<&"z��	-Z������g��N��u#;v���M^^�j�����&�***h��$�(((������g������_���#u����������vu\T�{�������������N���������[Ubcc)44���iCVVVdggG���4h� ����S��~�����5*���b1M�2��x�mYZZR�v���yC�����s'���PLL=z����G������GVVV���GK�,Q��i����>e<d�j��������Y[[�����Obb"������C233#[[[266��� ��>]����dddDS�N�1c����u������U�t�QM(00�F?u�+++���V�+������Ffff������6m����D���
;t�P��Y[[�����96m�]=z� Z�������7�x��m[@������E�����kWj��
�\�Rc}�u�!�]�iI��~
���iiih��u��\
�����M���3T<@�y����m���%l%�����Pyy9���������(((@QQ���5.7$999���fK��?Fee%���aaa�X����R�YYYpuu�:/���!�J������222���^�,yyy�������P�a�T
SSS��l�R)�����c�Zc��� ''��������k��Y��}�v���K;v,++"���Oq��}DEE!!!"�999[���d����������������e9M��>}Z��MEVV5^]��l�����'�������Ad��dlkBII	rrr`aa���^U
���������f.��S���!�n@�rONN�����o����z�hI�ajj*�����o���Sq��}f�Q���o��mZ
���r8��#))	~~~055Eaaa�{r�<y�: ;;�O��2�p�	l��	����������_7�8�(f���m�����������Z�f���;������r����.p8���C�����B����Wk��������A/�p�+s��A�>}�{�n���6�8�����w�^!""���iV(����r%�@pE��ia�������h��
^x���=����v�n����~�	}�all����������p###������7n3��i8***���[���Cz_�������_|������
�j�*f���?|���BQ(8y�$N�<���T�d2����u��pqqAHH�������i�\�v
#G���)S�L0q�G}���H\�pA����T����z�jXXX������P(X�j��7r���.���p�����`�����a��-u�a�x�"/^�={��S�NM-�Wt9���p8-�G���p8��"��.���p8�E�]���p8N��+��?����1�n�jjQ�q\�x�F�����Z����P�=�����m�6�����T���iL��6mBqq1��5k|||�Z�z����M�6��������k���������}WA@E���\@rEK���%}T�S#���J>aV�o��a�I,QQ��
M�����[� ��������q�a�,@|�������s�����~�3����������Q�����A�0y�dh����8p \]]�'N�{�������[��gmm��;�C�C���w��ach��>|�������k��Ps��f�8DDt��:~�8�����L�g��:��FNK�������G����Pjjjs�e������r���V�(R�N�h���T[[����~�H$TZZj��-���*���yyy���w�M���P


��;�~733c�CCC�o����������OG�iP^dd$�m������m��Nx����#�K�?������2������8z���|�����'�,�19-SSS�;w111�������a���]kFM����_���w�^6�����2��z�Bjj�A��4,--����`�������S�p��),Z���sqqa�O�:�����u�����s��������>S��s�N����MY��
x����#��K�?�����������)���t`��e:�hLNK�����U08k���H$B��������{�"==��O���{�y��_���PSSc��-��;"""�������[�F������+���~�3g���k�1�Z����h3Gh��x6=|����888�g��j�������G/���4=K�,Aqq1


������j,[�"�.lnu��}�v��m�,]��r�J�?��=/��;&"$''7�6N�����Rk�/t��EjHH��c����i>ab��������}�6������;7�:
����M�6<oK�[�n���


��h�<��������	��<h�#Z�_j�=�������3C�ERR�;�D��7���
^��Y���999�������1x�`\�x�������ekk��S�"<<���8t�n���: **
}���w�}��g�B&�!;;@���={6����j�*@aa!��]���La��5h��-h-�19���_!!!g��������=z **
���
���mF����c��MHKKCmm-m�]�D���4:t7n����#�v��a���o��*�KJJ�q�F\�p<�X,������1k�,���*���d���BEE***P]]�����?���_��"$$���.�������?x��)�����dEEv����W�"++&&&����������/����D�;v����������#�����b���x��7t��������5B�UNMM
������lTWW#00��wGdd$�����gdd���>Crr2{��y�f;v@�#��7
���N������e�a���Czz:�������X���,X�VVV "$%%!%%�o����F�������CCCq��5����
j�W����"���}�������D��u���0`f�����B}�����-�*_[���m������;������C$����=*--��m���\]]�b�
�������?���2���<uv����#99������n��0����]�����
��TS�S�`��n���'{{{:u�����X,���`���/9r����i��A�v���t�L&���W;v,�������J���$�	���KmY���4x�`���+=z����O$�z�*%$$���+��W^a; ���K+W�d�QPP-[���������2����E���O�����sg��o����?N...���H�.]R[g����S����O>�+W���999���������xVWooo���;���PZZ%$$P�n�H$Qdd������:����q����k�(33���_O$�i��
Je�����i���pKKK����N�:����Y��3f�����������P�;j����}���-ZD������?��1c���k$�Ju.��]dmmMqqqt��=*++���L�3g�u����WR��	��������rN�>M���djjJ������IW�^���7���yzz����IMM���h
		ae�5����)::��-[�S^}tZ�f
���i���4t�PJLL���T
 L���4l�0������$:t�9;;�:u��6��s' ����7�|����M��>��c�/  �?~��G"��<1114c�>|8%&&��'����PXX�"�|�p�b�����rumW9B����M666�LLL(**����OYYYM...��w���/�O���#Gz������>ci��JH=�X�k�#t�K���6�jSM�O��Q�c���i�������}�RUU�����rppP
�5u�T@}��QjL�B���i,���������~)�����c���;�����J���=�
DDD+V� dgg�ROM2���/�}||���H)m��5�@5�����N�>��TVV�z���G�L�(.�^{�5���TJ�}�6[\M�4�����e����(]�|�r@"����;�R��-[X��B�/_���2���$�mu�������H$dnnNh���J�H�R���?���W�\������K��2�����(&X	'o IDAT&F%M[n������h��k����-����*����C������?������o�F=����N�����^�z��������_�t��u�R����Y��G���x��I����n*�...t��E����A��i���<}��QMqo��-Z�H)}���,��������A���b���M�rumW"������f2>�t�;��C���K)T!������������z����#��a�����3�6U?5%F[�������)<x��_��f���J��m����_�NDD��c�:����>`�������7���=J�������4�t������#��)//'333��o�d2���a���Q'C�����D�����"GqBz����:?o���]ci			*r��� ��eK�y�z�-����c�|DDyzz�8�������?�X��	���7�222��_PP�`������W�\Q�k�������I&�	._*���������%K���3���3�?--����T���s��1=���5���_G�����yS����J������J�1����89;;��x���X��Td�Z����<yR����'�w��5��6�~u�������_�.](<<�����tc�!����E��v�����o���&�7���l,��E�>���(��W^yE��^x�����_)m��a4w����O=�`���rt]��t�o�J���h�o����������^�o����?�.ZVV;�����...5j�R~����`������82r�H"77nnn���x��ecc���4�;'O�������MS��I�9,���	���W������KJJ���_����u�O�f�/����\c ��P��������w���:���q��e�������,��G�4�g�3g���4�7*4����j�={ ���kW�</���Y�g]5�/�����B&�a��
		���-����x�b����Q]���_�cGGG���i�_kkk��Fv��A�:+++�>zVV���o�u��!uz��� +oeP�l:`��k��>}�VO'''v,����+W�����rrr������7c��!Z�	��n���P� �vt�ec���r���>v��/�}3�����7g��Avv6�qqqL�����������7�B�����!1f;b�5�~M���&&&,�|!����.]�(����XXX�s���q����O��a�����'�t�(mP,K��������`ff����711���ajj����������G+��$C[9�o�f�/<<\IG9�v���F�������#G���T�k�����D"a�7n�������gO�i�QQQ8x� 


����3���/'??�����.]��s��J��������n�����F�����1v�X�mm-$	���K�������:��O����~���Guu5����(�]�r��z=�!uj�����K���n�T������v��7hk;����lS�B�U_;x��wD���7�_�3k������=�7o����~��`L�
�1��������0z��?�������l�'�sr��U�>p�@���O�F]]]��+KS^[[[�����<O�<����-}�ah#�19��������%%%���?���S	q���O�<a�	&������+xyy~��GL�6
555=z4>OOO������Ahii)H���x{{C$�����:-+���D~~>�?�K�.!##���(--Edd$����Sc5������E'9r�WE��k�����#++*�F�kL���3�-�7��o��vt�ec��1m^}����_���>|�o��,��}�p��14������E\\>��S�����m�[oC�Rt���������������!�/�~���p���R|���W/����X,���w�^�������B�������O?���8���~Bee%`���(++C�����emd4&������?BSd�������H$R�T��:���Ox���������O��/��x�B1�f���QVV�Y�f���^^^HLLT��[��,;;;vw��p��u�y�	A*�b��a�y�&���0�|���YYY�p����q��]��M(�]�1�+��+����E/)���T������[�nZ����o���C��S'C��'
�����CDDf����#�*��!���-�6�m���kfff�={6���c��E�N�0x�`�D"��7�k�.l��VVV7n��z����f(�����1�BW���b�\"���5j{�K��)E�O�?�'���666���o�:P1�zc���r���w�����d���"�������������"  @k���������g��a����������R��:������{c��}�{���&���:���������2""���l������P~��Z�W����w�
q��	���[��dee%���T~���F
:"��e�wglmm(��������?������\������*����U>��h�eee����X�N��y���)�q���~��Pd��)��w/�����{�5�zM���A���ec���m�y���9s���333�+@�>kkk�����?��9s|���hJ���0c�O�o���w�)�����O�yy��1c�PEE;_UUE]�v%�?�A�={F3f�`r�x�
�s�����������'O&@������,���={H*��������J��Lh������#������xA2�CD4a�@���>;WTTD���
�D"Z�t�J8�:��������FGGSqq1�����M�mM�w�;99���+}��WL���2�]�vJ���������B��<y����<88���?��tJ$�����vyJ$*//oP?��o����u��9$�HX��u�H,�H$��7Ruu5��y�������Q)����KKK	��������K���BS�Li�O41v�X@�����|���y�={{{�HW�\!OOO�#�����\{����� 4q�D�J�t��q���W	�%$�.:������Y��3�$	=}�������h��
,}���$�H����jjjH"�����Y��M�(''��6��'�<�x�h���
���DB���a���H"��
!����M"����~���.]J�����t�
���[6�m
��O����6����G@}����2�4y(=�XL���S[oC�C�{cs��~���A�������}���];��/v������C��u�6m���u�l���<6lYZZ��A��S�N4w�\����������#*u&"�5k
�l����u���(22R%�eFFyzzR�N��]�v���_
������
Z�l���Q���i���dggG���t���u�T�K�.Q����C����I�����]4Ob���������4i�$������@������@Z�b����������c���������Q����Gt��	


"+++@������Z233#{{{rvv&gggrpp sss���D$8?��!C��������������R)Ovv6M�8�|}}��������BBB(==]��+**����f��A���'ggg���+k����HRR�~��i��k�*���N�����M���%GGGrss���0JJJ�X������
yyyQrr��y����wo���%'''rqq!�����~����lmm��������=���QQQ����R��������/�H����?�L���G.\��~B177';;;rrr"gggrqq!gggrtt$�F?v�<������R������T'����hk���M�r�iWE���3g����i�?�%	YXX����5�0T=�b���#���KM���TS������w�:??�;wl��
3f���[�XHu���SZZ�����(�=���5{,+�����7{/IjjjPPPwww�!��R)


��M�?y��m������PYY�v���<vx���\[[�[�n������e����������!JJJ������5�#c}���BQQ\]]
�{YY{LYYY���BXYY���]o�@�������������N�:	�^H�*RVV�L�BKJJJ���3����5�>:����#00����~�:,,,�[������4f���Mc��6���������.#$�$�Zw�~�����[Ca��n||<{!<77�-z9N���7� **
.�W_}���p��7[�l�?����z����p8�V�Q��'O�?���m�6������L����#;;�n�j�P7e>|��;�g��8u����s8�?%�����O>�������������(���h���{�����%&M��B�q����:DDD��������\��12F�`Dyy9n����������������d�(���4B��������#G��>�_|��*�W�l�2H$���o���hnu8��c�W8N�"77��M��_~���c\N�:����c��]���cs���p8���.���p8�Ub�/�q8���p8�_�r8���pZ%|���p8��i�%��+��7���`��I077,����7����������F@@�4�4D�_�������sss���#22��/��QXX���%��������2�	����$%%!//����/����G7�N�J�|x�H$�f��r�>}��+W�$�������G���LVjj��5�4%�����o_@o��&9r�}c<&&���kq\�v���������@QQ� ���a�eH�y����jQ:q8�&��V�L&C�^������z�����k���$������CLL����433f��������;wFUU��?�hf�Z�p��L���nG�0��2$�|�
N�8��jp8�V@�X������������5k ���}{DEE�%����@Zq��T�&�a��A$���,@�^��x��f���b�v���]�����1������7�
�%K�`��������]r�=���Om��e������R��Q��.��Z��/tSRR�i���V������*p8�`���p8��.tKJJ�q�F\�p<�X,������1k�,���6x�D"��;p��ETTT���������1r�H�������g�}���d������q��1���6n��"����w����W������b���x���Y>�L���(TTT������8|�0���O|���x��!BBB�������
��o����QQQ��O�b����>}��ziCLL
!�Q[[777�X�B�k�?B�Dh�k�\�����CYY:�7n�����u��/����0���5`��(..f2���{\�x���P@MM
������lTWW#00��wGdd$��������X������t�R���!==�������X,FHH,X+++���������o���	#F�@DD�������c�p��������
*�c�iiil�8::�k��6l�����]�|�}����!� ��PSS�)S�(�[�v-JJJ`jj���,\����Z����!�F��R7v~��w$''#;;���0`f���2V�dggc��������G�����A�a����cRSS!���_ 88X�z�$�����Ejkk���������{�.***�����={"**Je	m3�����9�`k�[]]u�����q����k���I���'���a���v��E���G������2����9s�Z�n���Rtt4�������F����h����e����NNN����Z�h�����?�Lc��!��k��T*e�O�6�:v�H����rrr�S�N�~�z��{��DD���_Shh��]���KN||����s��%daaA&L�O?��I�Gh�ms!�O�<���|||(  ����JJJ���W���%�I�&����U�s<}��4s�L�c�^���<w��>}�����bcc)33��^�J�7o&+++������k�����`�Gbb"��9��J������J���������
F���D�"ggg@S�Nm�Ot���������	����v��M���K^^^����s�9�v���M��w���JKK�������D"���dQ[233)::�|||��&L��/*�^�z5���Q�6mh��9�����^��Gm�k4�.ucg������H'N� ???@aaa
���5k����|||h���t��	z�����Y�f�g�}F����b�h����|�.>�H7 ���+��W/@#F����$����E��9����:����$4?��m�����EHH�R����	�D"6��qss�^�z����d�����)66���o�>��H$�h���JiR�����Oh���Ji[�l!dnnNC����/SYYst�
by����:f��R���|�2u�����Pt�"��D�6���9O�>UJ?r�K7n�RZS�"�{��1��}�������%���[�~{��!djjJ���W[mt���TZp����J��������O[�nUJ�={6K����mY^^�������J�vS\lb���k���s��mrttd�Ev�����;w���;w����9;vL�^��_c�5D�}��cg��EJ����g�g��UJKMMei����RZxx8���*--���SFFK���m��E�]��?~L...����K���,-::���{�n��L�X�e�q8���qt#""���Se��������?f��R)YYY���	-Y����9C��=c�iii*wM�]�����|W�\QI��}; www��d���D9a��������1�R�����o'KKK�2e
UTT�������t��&����(��e�������#G���M1�4/tG���n����Cee%���u������"�HX^ggg�;]?��K0`�JY�V�b�'O�TJ��-.\��IHHP���h���]��#o�����h�J�l�maaA���S�n����^D���&t�5D�/*�i...*cg��],}���JiK�,ai��_WJ[�`K�{�� �Z�ob����w�y�]�g�������#��������6:�t{��1�������w���:���q��e�������]�r�b1^}�U�d2l��!!!���EPP/^��� ���	����g���D"t��U%�/����w�^�r�������3q���w���o��>}���H��=����}%JB��!�����\_�'==@�����:���:tP�cee�"5dee����V+O�./���b���MMM���T�QL�G�toK�����Cm����� v,#@��~������a��������c��U:�k�{c�P9���������;����j��g��LLLm�k���y4���>������W�^J������~�:��;;;;��L�X2���pt����n�����8�������Bpp0^|�EH�R��������III���D"�D"���~�`��������Gmm-��K�.
���������Ed�v����>����d��'�Y�f���]��y�����\_����qVV�Au�g<�����_��V��\���LW]��i�W�"���T*����Y���^[�����D"QJ�6m>����w��m���������?�z}�������r��
3fV�X���b8p���(//GZZ`��y����ZfK�-���.��R��|cu�����%c�=GW������1m�4���`���8|�0<==���W����D~~>�?�K�.!##���(--Edd$����h�YYY������+���!�@D���\�D"�u���|�}�5r�Hl��#G�DVV�����;b��!:��k�<��61T��KQQ;�OL-a<����cM��(^cH]�A��tvvFaa!��������F��P������p�BTUU��/������-[�`���:�iC�_C����m�"22III����p��	�m�(..���k�]smi���y4��>>����������K���������4�89Fyu����f�BMM
�����h	�IDAT�����8����R)�
��7o��������;����.���w�����7���7���C�vvv�,)�Mz��W�
��V�[��?�^^^HNN����R)&L����\�������m.G������btsssc�#����R�#�J�Dfff�n��E}��-_|�Ev|��]�)������[%}����Nf\\V�\	ooo�?^���i���������m���GQPP���Wc���8v�?~�5k����B���`�@��E����233,���
�?�����%]�^^^"""0{�l���p8�b��nqq1*++�?
Q|4�O�f��_�PYY�����O��C�B$�����W|4TVV����/��?������A�O�8���{�����:
A�z5���<���`��QJqZ�E��JS�����U���yG�t�����:>��cv�����������,_���~U��\�|9���P�����&D}�����$�������T��KKK�����'O�`���X�b��_3�������B<}�_}�lll���p������%�!����]�����c��X��d�8q"���o3�cI��7e�������x�������c�r��^433�����'O��!C�P��]	���y��yz��1�����:���J;6/]�D...4e��r���C�&N�HR���?N���*a���[Gb��D"m����c�y�&������#m�����H$��G)�(�H$l�"�n�R�-=g��H$DD���|����t��-�����o��t��9*,,�=:���6�������Y$��
�7n����{j��]����9����bx�i���D"��������D���W�fp�����$�>,VMM��l!�������Y�1c��D"a!����h��
,}���$�H����jjjH"�����Y��M�(''G��$���*������?�����*�h���U^PP�`;kB>F����������+���%"���2�:u��1"����\]]	u�����]��1t���|WccG"����~���.]J������|///�����c�FFFRrr�V:)��j��E�� �������������Gs��!�HB�L�X�e��c0������G���-++��2C���������Q����Gt��	


"+++@������
211�3f���������v������Qr�r�����
yyy�8N9���4q�D���%sssrpp SSS
		���t����������������������\ib�3d����&GGGrvv&;;;���$"T���Z��dkkKNNNLVxx8+����lll��������bcc��?B�Dh�Eq2Z�h�3����X9����b�
����5����������������������Sxx8�i��lmm�������(,,����T�
��w��Jz���o��FDD���dgg�d������QAA���+�%�H��m����gi������L����N�:QPPm������0=z��~TG||<��bJKK������I��������V�1"'&&���;��<���6��C5��������������7��c4k�[�j�f���Jc�������(??_I���[t��D�}�"W�^�1c����'�����������3Y�m�	K������<<<����.\���������L�JJJ������5�����L�QHaa!�������U9��=S�3�y���PTTWWW�?��^�FH���!�|��,���-[���o���EEEh���J���MW��� ������,�
]����vvv���� ��`ii	+++XXX�����<|�...���������|���D�����|��o��m�������o��%"<{��n�Bbb"��� �PXX�q��&Z�o�>>������pww��Vk3�c�%�=GN�,t9c��d���Kqq1&N��X�}�����O�<���?V�Z����7����]����@������\�;�UUU�����G�����{������i=����O��_~�����������c�>�nnn�3gN3k�����vvv�J�8���|w����'O`bb���p8��~0��12�+V������<x���O��X������/,,, �QSS�)S����S8y�$[������G1a������:u*F��v������������SSS8p��3�-N�������!��0k�,XYY�����UUU��u�A����wr��Y����/�<y����������kn���H�R=zG�E~~>��� ����<�G��u4c�}����]���p8N������p8��i���.���p8�U�����p8�V	_�r8���pZ%|���p8��i���.���p8�U�����p8�V	_�r8���pZ%�,z(/8*�IEND�B`�
#7Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#6)
Re: Assertion failure with barriers in parallel hash join

On Sat, Mar 6, 2021 at 9:56 AM Thomas Munro <thomas.munro@gmail.com> wrote:

While working on Melanie's Parallel Hash Full Join patch I remembered
that this (apparently extremely rare) race still needs fixing. Here
is a slightly tidied version, which I'm adding to the next CF for CI
coverage.

Pushed and back-patched.

#8Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#7)
Re: Assertion failure with barriers in parallel hash join

On Wed, Mar 17, 2021 at 6:17 PM Thomas Munro <thomas.munro@gmail.com> wrote:

On Sat, Mar 6, 2021 at 9:56 AM Thomas Munro <thomas.munro@gmail.com> wrote:

While working on Melanie's Parallel Hash Full Join patch I remembered
that this (apparently extremely rare) race still needs fixing. Here
is a slightly tidied version, which I'm adding to the next CF for CI
coverage.

Pushed and back-patched.

According to BF animal elver there is something wrong with this
commit. Looking into it.

#9Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#8)
Re: Assertion failure with barriers in parallel hash join

On Wed, Mar 17, 2021 at 6:58 PM Thomas Munro <thomas.munro@gmail.com> wrote:

According to BF animal elver there is something wrong with this
commit. Looking into it.

Assertion failure reproduced here and understood, but unfortunately
it'll take some more time to fix this. I've reverted the commit for
now to unbreak the ~5 machines that are currently showing red in the
build farm.

#10Melanie Plageman
melanieplageman@gmail.com
In reply to: Thomas Munro (#9)
Re: Assertion failure with barriers in parallel hash join

On Wed, Mar 17, 2021 at 8:18 AM Thomas Munro <thomas.munro@gmail.com> wrote:

On Wed, Mar 17, 2021 at 6:58 PM Thomas Munro <thomas.munro@gmail.com> wrote:

According to BF animal elver there is something wrong with this
commit. Looking into it.

Assertion failure reproduced here and understood, but unfortunately
it'll take some more time to fix this. I've reverted the commit for
now to unbreak the ~5 machines that are currently showing red in the
build farm.

So, I think the premise of the patch
v6-0001-Fix-race-condition-in-parallel-hash-join-batch-cl.patch makes
sense: freeing the hashtable memory should happen atomically with
updating the flag that indicates to all others that the memory is not to
be accessed any longer.

As was likely reported by the buildfarm leading to you reverting the
patch, when the inner side is empty and we dump out before advancing the
build barrier past PHJ_BUILD_HASHING_OUTER, we trip the new Asserts
you've added in ExecHashTableDetach().

Assert(!pstate ||
BarrierPhase(&pstate->build_barrier) >= PHJ_BUILD_RUNNING);

Hmm.

Maybe if the inner side is empty, we can advance the build barrier to
the end?
We help batch 0 along like this in ExecParallelHashJoinSetUpBatches().

But, I'm not sure we can expect the process executing this code to be
attached to the build barrier, can we?

@@ -296,7 +304,19 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
                                 * outer relation.
                                 */
                                if (hashtable->totalTuples == 0 &&
!HJ_FILL_OUTER(node))
+                               {
+                                       if (parallel)
+                                       {
+                                               Barrier    *build_barrier;
+
+                                               build_barrier =
&parallel_state->build_barrier;
+                                               while
(BarrierPhase(build_barrier) < PHJ_BUILD_DONE)
+
BarrierArriveAndWait(build_barrier, 0);
+                                               BarrierDetach(build_barrier);
+                                       }
+
                                        return NULL;
+                               }
#11Melanie Plageman
melanieplageman@gmail.com
In reply to: Thomas Munro (#9)
Re: Assertion failure with barriers in parallel hash join

On Wed, Mar 17, 2021 at 8:18 AM Thomas Munro <thomas.munro@gmail.com> wrote:

On Wed, Mar 17, 2021 at 6:58 PM Thomas Munro <thomas.munro@gmail.com> wrote:

According to BF animal elver there is something wrong with this
commit. Looking into it.

Assertion failure reproduced here and understood, but unfortunately
it'll take some more time to fix this. I've reverted the commit for
now to unbreak the ~5 machines that are currently showing red in the
build farm.

Also, silly question: why couldn't we just set the pstate->batches pointer to
InvalidDsaPointer before doing dsa_free() (of course saving the pointer
so that we can actually do the freeing with it)? Is there still a race?

#12Melanie Plageman
melanieplageman@gmail.com
In reply to: Melanie Plageman (#10)
1 attachment(s)
Re: Assertion failure with barriers in parallel hash join

On Wed, Mar 31, 2021 at 6:25 PM Melanie Plageman
<melanieplageman@gmail.com> wrote:

On Wed, Mar 17, 2021 at 8:18 AM Thomas Munro <thomas.munro@gmail.com> wrote:

On Wed, Mar 17, 2021 at 6:58 PM Thomas Munro <thomas.munro@gmail.com> wrote:

According to BF animal elver there is something wrong with this
commit. Looking into it.

Assertion failure reproduced here and understood, but unfortunately
it'll take some more time to fix this. I've reverted the commit for
now to unbreak the ~5 machines that are currently showing red in the
build farm.

So, I think the premise of the patch
v6-0001-Fix-race-condition-in-parallel-hash-join-batch-cl.patch makes
sense: freeing the hashtable memory should happen atomically with
updating the flag that indicates to all others that the memory is not to
be accessed any longer.

As was likely reported by the buildfarm leading to you reverting the
patch, when the inner side is empty and we dump out before advancing the
build barrier past PHJ_BUILD_HASHING_OUTER, we trip the new Asserts
you've added in ExecHashTableDetach().

Assert(!pstate ||
BarrierPhase(&pstate->build_barrier) >= PHJ_BUILD_RUNNING);

Hmm.

Maybe if the inner side is empty, we can advance the build barrier to
the end?
We help batch 0 along like this in ExecParallelHashJoinSetUpBatches().

But, I'm not sure we can expect the process executing this code to be
attached to the build barrier, can we?

@@ -296,7 +304,19 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
* outer relation.
*/
if (hashtable->totalTuples == 0 &&
!HJ_FILL_OUTER(node))
+                               {
+                                       if (parallel)
+                                       {
+                                               Barrier    *build_barrier;
+
+                                               build_barrier =
&parallel_state->build_barrier;
+                                               while
(BarrierPhase(build_barrier) < PHJ_BUILD_DONE)
+
BarrierArriveAndWait(build_barrier, 0);
+                                               BarrierDetach(build_barrier);
+                                       }
+
return NULL;
+                               }

I've attached a new version of the patch which contains my suggested fix
for the problem with the empty inner optimization.

If you apply Thomas' injected sleeps original bug repro patch and use
the following DDL and query, you can reproduce the issue with the empty
inner optimization present in his v2 patch. Then, if you apply my
attached v3 patch, you can see that we no longer trip the assert.

drop table if exists empty_simple;
create table empty_simple(id int, col2 text);
update pg_class set reltuples = 10000 where relname = 'empty_simple';

drop table if exists simple;
create table simple as
select generate_series(1, 20000) AS id, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
analyze simple;

set min_parallel_table_scan_size = 0;
set parallel_setup_cost = 0;
set enable_hashjoin = on;
set parallel_leader_participation to off;
set work_mem = '4MB';
set enable_parallel_hash = on;
select count(*) from empty_simple join simple using (id);

- Melanie

Attachments:

v3-0001-Fix-race-condition-in-parallel-hash-join-batch-cl.patchapplication/octet-stream; name=v3-0001-Fix-race-condition-in-parallel-hash-join-batch-cl.patchDownload
From e2d212f6ecbf2ba0adef695fde478b980bfed948 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 2 Oct 2020 15:53:44 +1300
Subject: [PATCH v3] Fix race condition in parallel hash join batch cleanup.

With unlucky timing and parallel_leader_participation off, PHJ could
attempt to access per-batch state just as it was being freed.  There was
code intended to prevent that by checking for a cleared pointer, but it
was racy.  Fix, by introducing an extra barrier phase.  The new phase
PHJ_BUILD_RUNNING means that it's safe to access the per-batch state to
find a batch to help with, and PHJ_BUILD_DONE means that it is too late.
The last to detach will free the array of per-batch state as before, but
now it will also atomically advance the phase at the same time, so that
late attachers can avoid the hazard.  This mirrors the way per-batch
hash tables are freed (see phases PHJ_BATCH_PROBING and PHJ_BATCH_DONE).

The build barrier must make it to PHJ_BUILD_DONE before shared resources
can be safely destroyed. This works fine in most cases with the addition
of another synchronization point. However, when the inner side is empty,
the build barrier will only make it to PHJ_BUILD_HASHING_INNER before
workers attempt to detach from the hashtable. In the case of the empty
inner optimization, advance the build barrier to PHJ_BUILD_RUNNING
before proceeding to cleanup. See batch 0 batch barrier fast forward in
ExecParallelHashJoinSetUpBatches() for precedent.

Revealed by a build farm failure, where BarrierAttach() failed a sanity
check assertion, because the memory had been clobbered by dsa_free().

Back-patch to all supported releases.

Reported-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/20200929061142.GA29096%40paquier.xyz
---
 src/backend/executor/nodeHash.c     | 47 +++++++++++++++++--------
 src/backend/executor/nodeHashjoin.c | 53 ++++++++++++++++++++---------
 src/include/executor/hashjoin.h     |  3 +-
 3 files changed, 71 insertions(+), 32 deletions(-)

diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 73eb074cbf..db5d46b23f 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -333,14 +333,21 @@ MultiExecParallelHash(HashState *node)
 	hashtable->nbuckets = pstate->nbuckets;
 	hashtable->log2_nbuckets = my_log2(hashtable->nbuckets);
 	hashtable->totalTuples = pstate->total_tuples;
-	ExecParallelHashEnsureBatchAccessors(hashtable);
+
+	/*
+	 * Unless we're completely done and the batch state has been freed, make
+	 * sure we have accessors.
+	 */
+	if (BarrierPhase(build_barrier) < PHJ_BUILD_DONE)
+		ExecParallelHashEnsureBatchAccessors(hashtable);
 
 	/*
 	 * The next synchronization point is in ExecHashJoin's HJ_BUILD_HASHTABLE
-	 * case, which will bring the build phase to PHJ_BUILD_DONE (if it isn't
+	 * case, which will bring the build phase to PHJ_BUILD_RUNNING (if it isn't
 	 * there already).
 	 */
 	Assert(BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER ||
+		   BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING ||
 		   BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 }
 
@@ -624,7 +631,7 @@ ExecHashTableCreate(HashState *state, List *hashOperators, List *hashCollations,
 		/*
 		 * The next Parallel Hash synchronization point is in
 		 * MultiExecParallelHash(), which will progress it all the way to
-		 * PHJ_BUILD_DONE.  The caller must not return control from this
+		 * PHJ_BUILD_RUNNING.  The caller must not return control from this
 		 * executor node between now and then.
 		 */
 	}
@@ -3065,14 +3072,11 @@ ExecParallelHashEnsureBatchAccessors(HashJoinTable hashtable)
 	}
 
 	/*
-	 * It's possible for a backend to start up very late so that the whole
-	 * join is finished and the shm state for tracking batches has already
-	 * been freed by ExecHashTableDetach().  In that case we'll just leave
-	 * hashtable->batches as NULL so that ExecParallelHashJoinNewBatch() gives
-	 * up early.
+	 * We should never see a state where the batch-tracking array is freed,
+	 * because we should have given up sooner if we join when the build barrier
+	 * has reached the PHJ_BUILD_DONE phase.
 	 */
-	if (!DsaPointerIsValid(pstate->batches))
-		return;
+	Assert(DsaPointerIsValid(pstate->batches));
 
 	/* Use hash join memory context. */
 	oldcxt = MemoryContextSwitchTo(hashtable->hashCxt);
@@ -3192,9 +3196,17 @@ ExecHashTableDetachBatch(HashJoinTable hashtable)
 void
 ExecHashTableDetach(HashJoinTable hashtable)
 {
-	if (hashtable->parallel_state)
+	ParallelHashJoinState *pstate = hashtable->parallel_state;
+
+	/*
+	 * If we're involved in a parallel query, we must either have got all the
+	 * way to PHJ_BUILD_RUNNING, or joined too late and be in PHJ_BUILD_DONE.
+	 */
+	Assert(!pstate ||
+		   BarrierPhase(&pstate->build_barrier) >= PHJ_BUILD_RUNNING);
+
+	if (pstate && BarrierPhase(&pstate->build_barrier) == PHJ_BUILD_RUNNING)
 	{
-		ParallelHashJoinState *pstate = hashtable->parallel_state;
 		int			i;
 
 		/* Make sure any temporary files are closed. */
@@ -3210,17 +3222,22 @@ ExecHashTableDetach(HashJoinTable hashtable)
 		}
 
 		/* If we're last to detach, clean up shared memory. */
-		if (BarrierDetach(&pstate->build_barrier))
+		if (BarrierArriveAndDetach(&pstate->build_barrier))
 		{
+			/*
+			 * Late joining processes will see this state and give up
+			 * immediately.
+			 */
+			Assert(BarrierPhase(&pstate->build_barrier) == PHJ_BUILD_DONE);
+
 			if (DsaPointerIsValid(pstate->batches))
 			{
 				dsa_free(hashtable->area, pstate->batches);
 				pstate->batches = InvalidDsaPointer;
 			}
 		}
-
-		hashtable->parallel_state = NULL;
 	}
+	hashtable->parallel_state = NULL;
 }
 
 /*
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 510bdd39ad..065294c3f7 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -45,7 +45,8 @@
  *   PHJ_BUILD_ALLOCATING            -- one sets up the batches and table 0
  *   PHJ_BUILD_HASHING_INNER         -- all hash the inner rel
  *   PHJ_BUILD_HASHING_OUTER         -- (multi-batch only) all hash the outer
- *   PHJ_BUILD_DONE                  -- building done, probing can begin
+ *   PHJ_BUILD_RUNNING               -- building done, probing can begin
+ *   PHJ_BUILD_DONE                  -- all work complete, one frees batches
  *
  * While in the phase PHJ_BUILD_HASHING_INNER a separate pair of barriers may
  * be used repeatedly as required to coordinate expansions in the number of
@@ -73,7 +74,7 @@
  * batches whenever it encounters them while scanning and probing, which it
  * can do because it processes batches in serial order.
  *
- * Once PHJ_BUILD_DONE is reached, backends then split up and process
+ * Once PHJ_BUILD_RUNNING is reached, backends then split up and process
  * different batches, or gang up and work together on probing batches if there
  * aren't enough to go around.  For each batch there is a separate barrier
  * with the following phases:
@@ -95,11 +96,16 @@
  *
  * To avoid deadlocks, we never wait for any barrier unless it is known that
  * all other backends attached to it are actively executing the node or have
- * already arrived.  Practically, that means that we never return a tuple
- * while attached to a barrier, unless the barrier has reached its final
- * state.  In the slightly special case of the per-batch barrier, we return
- * tuples while in PHJ_BATCH_PROBING phase, but that's OK because we use
- * BarrierArriveAndDetach() to advance it to PHJ_BATCH_DONE without waiting.
+ * finished.  Practically, that means that we never emit a tuple while attached
+ * to a barrier, unless the barrier has reached a phase that means that no
+ * process will wait on it again.  We emit tuples while attached to the build
+ * barrier in phase PHJ_BUILD_RUNNING, and to a per-batch barrier in phase
+ * PHJ_BATCH_PROBING.  These are advanced to PHJ_BUILD_DONE and PHJ_BATCH_DONE
+ * respectively without waiting, using BarrierArriveAndDetach().  The last to
+ * detach receives a different return value so that it knows that it's safe to
+ * clean up.  Any straggler process that attaches after that phase is reached
+ * will see that it's too late to participate or access the relevant shared
+ * memory objects.
  *
  *-------------------------------------------------------------------------
  */
@@ -296,7 +302,20 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 				 * outer relation.
 				 */
 				if (hashtable->totalTuples == 0 && !HJ_FILL_OUTER(node))
+				{
+					if (parallel)
+					{
+						/*
+						 * Advance the build barrier to PHJ_BUILD_RUNNING
+						 * before proceeding to cleanup to comply with build
+						 * barrier safety requirements.
+						 */
+						Barrier *build_barrier = &parallel_state->build_barrier;
+						while (BarrierPhase(build_barrier) < PHJ_BUILD_RUNNING)
+							BarrierArriveAndWait(build_barrier, 0);
+					}
 					return NULL;
+				}
 
 				/*
 				 * need to remember whether nbatch has increased since we
@@ -317,6 +336,7 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 
 					build_barrier = &parallel_state->build_barrier;
 					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER ||
+						   BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING ||
 						   BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
 					if (BarrierPhase(build_barrier) == PHJ_BUILD_HASHING_OUTER)
 					{
@@ -329,9 +349,18 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
 						BarrierArriveAndWait(build_barrier,
 											 WAIT_EVENT_HASH_BUILD_HASH_OUTER);
 					}
-					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
+					else if (BarrierPhase(build_barrier) == PHJ_BUILD_DONE)
+					{
+						/*
+						 * If we attached so late that the job is finished and
+						 * the batch state has been freed, we can return
+						 * immediately.
+						 */
+						return NULL;
+					}
 
 					/* Each backend should now select a batch to work on. */
+					Assert(BarrierPhase(build_barrier) == PHJ_BUILD_RUNNING);
 					hashtable->curbatch = -1;
 					node->hj_JoinState = HJ_NEED_NEW_BATCH;
 
@@ -1090,14 +1119,6 @@ ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
 	int			start_batchno;
 	int			batchno;
 
-	/*
-	 * If we started up so late that the batch tracking array has been freed
-	 * already by ExecHashTableDetach(), then we are finished.  See also
-	 * ExecParallelHashEnsureBatchAccessors().
-	 */
-	if (hashtable->batches == NULL)
-		return false;
-
 	/*
 	 * If we were already attached to a batch, remember not to bother checking
 	 * it again, and detach from it (possibly freeing the hash table if we are
diff --git a/src/include/executor/hashjoin.h b/src/include/executor/hashjoin.h
index d74034f64f..d8edd39923 100644
--- a/src/include/executor/hashjoin.h
+++ b/src/include/executor/hashjoin.h
@@ -258,7 +258,8 @@ typedef struct ParallelHashJoinState
 #define PHJ_BUILD_ALLOCATING			1
 #define PHJ_BUILD_HASHING_INNER			2
 #define PHJ_BUILD_HASHING_OUTER			3
-#define PHJ_BUILD_DONE					4
+#define PHJ_BUILD_RUNNING				4
+#define PHJ_BUILD_DONE					5
 
 /* The phases for probing each batch, used by for batch_barrier. */
 #define PHJ_BATCH_ELECTING				0
-- 
2.32.0

#13David Geier
geidav.pg@gmail.com
In reply to: Melanie Plageman (#12)
Re: Assertion failure with barriers in parallel hash join

The following review has been posted through the commitfest application:
make installcheck-world: tested, passed
Implements feature: tested, passed
Spec compliant: tested, passed
Documentation: not tested

Hi all,

We recently encountered the same bug in the field. Oleksii Kozlov managed to come up with reproduction steps, which reliably trigger it. Interestingly, the bug does not only manifest as failing assertion, but also as segmentation fault; in builds with disabled and with enabled (!) assertions. So it can crash production environments. We applied the proposed patch v3 from Melanie to the REL_14_3 branch and can confirm that with the patch neither the assertion nor the segmentation fault still occur.

I have also glanced at the code and the implementation looks fine. However, I'm not an expert for the fairly involved hash join state machine.
There seems to be no need for additional documentation.

For completeness here is the stack trace of the segmentation fault.
Like the stack trace from the assertion failure initially shared by Michael and also encountered by us, the stack trace of the segmentation fault also contains ExecParallelHashJoinNewBatch().

#9 | Source "/opt/src/backend/executor/execMain.c", line 361, in standard_ExecutorRun
| Source "/opt/src/backend/executor/execMain.c", line 1551, in ExecutePlan
Source "/opt/src/include/executor/executor.h", line 257, in ExecProcNode [0x657e4d]
#8 | Source "/opt/src/backend/executor/nodeAgg.c", line 2179, in ExecAgg
Source "/opt/src/backend/executor/nodeAgg.c", line 2364, in agg_retrieve_direct [0x66ba60]
#7 | Source "/opt/src/backend/executor/nodeAgg.c", line 581, in fetch_input_tuple
Source "/opt/src/include/executor/executor.h", line 257, in ExecProcNode [0x66d585]
#6 | Source "/opt/src/backend/executor/nodeHashjoin.c", line 607, in ExecParallelHashJoin
| Source "/opt/src/backend/executor/nodeHashjoin.c", line 560, in ExecHashJoinImpl
Source "/opt/src/backend/executor/nodeHashjoin.c", line 1132, in ExecParallelHashJoinNewBatch [0x67a89b]
#5 | Source "/opt/src/backend/storage/ipc/barrier.c", line 242, in BarrierAttach
Source "/opt/src/include/storage/s_lock.h", line 228, in tas [0x7c2a1b]
#4 Object "/lib/x86_64-linux-gnu/libpthread.so.0", at 0x7f4db364841f, in __funlockfile

--
David Geier
(SericeNow)

The new status of this patch is: Ready for Committer

#14Thomas Munro
thomas.munro@gmail.com
In reply to: David Geier (#13)
Re: Assertion failure with barriers in parallel hash join

On Thu, Jun 2, 2022 at 9:31 PM David Geier <geidav.pg@gmail.com> wrote:

We recently encountered the same bug in the field. Oleksii Kozlov managed to come up with reproduction steps, which reliably trigger it. Interestingly, the bug does not only manifest as failing assertion, but also as segmentation fault; in builds with disabled and with enabled (!) assertions. So it can crash production environments. We applied the proposed patch v3 from Melanie to the REL_14_3 branch and can confirm that with the patch neither the assertion nor the segmentation fault still occur.

Thanks for the report, testing, and for creating the CF entry.

I assume you are using parallel_leader_participation=off, and the
reason we haven't heard more about this is because few people do that.
By coincidence I was just about to restart a bunch of hash join
projects and have been paging the topic area back into my brain, so
I'll start with another round of testing/analysis of this bug/patch
next week.

#15David Geier
geidav.pg@gmail.com
In reply to: Thomas Munro (#14)
Re: Assertion failure with barriers in parallel hash join

Hi Thomas,

Correct. We're running with disabled parallel leader participation and we
have to do so, because another custom plan node we built relies on that.
That would be great. Anything else I can help with to get this patch in?

Thanks!

--
David
(ServiceNow)

On Fri, 3 Jun 2022 at 00:06, Thomas Munro <thomas.munro@gmail.com> wrote:

Show quoted text

On Thu, Jun 2, 2022 at 9:31 PM David Geier <geidav.pg@gmail.com> wrote:

We recently encountered the same bug in the field. Oleksii Kozlov

managed to come up with reproduction steps, which reliably trigger it.
Interestingly, the bug does not only manifest as failing assertion, but
also as segmentation fault; in builds with disabled and with enabled (!)
assertions. So it can crash production environments. We applied the
proposed patch v3 from Melanie to the REL_14_3 branch and can confirm that
with the patch neither the assertion nor the segmentation fault still occur.

Thanks for the report, testing, and for creating the CF entry.

I assume you are using parallel_leader_participation=off, and the
reason we haven't heard more about this is because few people do that.
By coincidence I was just about to restart a bunch of hash join
projects and have been paging the topic area back into my brain, so
I'll start with another round of testing/analysis of this bug/patch
next week.

#16David Geier
geidav.pg@gmail.com
In reply to: David Geier (#15)
Re: Assertion failure with barriers in parallel hash join

Hi Thomas,

Can we make progress with this patch in the current commit fest, or
discuss what is still missing to bring this in?

Thanks!

--
David Geier
(ServiceNow)

Show quoted text

On 6/6/22 17:01, David Geier wrote:

Hi Thomas,

Correct. We're running with disabled parallel leader participation and
we have to do so, because another custom plan node we built relies on
that.
That would be great. Anything else I can help with to get this patch in?

Thanks!

--
David
(ServiceNow)

On Fri, 3 Jun 2022 at 00:06, Thomas Munro <thomas.munro@gmail.com> wrote:

On Thu, Jun 2, 2022 at 9:31 PM David Geier <geidav.pg@gmail.com>
wrote:

We recently encountered the same bug in the field. Oleksii

Kozlov managed to come up with reproduction steps, which reliably
trigger it. Interestingly, the bug does not only manifest as
failing assertion, but also as segmentation fault; in builds with
disabled and with enabled (!) assertions. So it can crash
production environments. We applied the proposed patch v3 from
Melanie to the REL_14_3 branch and can confirm that with the patch
neither the assertion nor the segmentation fault still occur.

Thanks for the report, testing, and for creating the CF entry.

I assume you are using parallel_leader_participation=off, and the
reason we haven't heard more about this is because few people do that.
By coincidence I was just about to restart a bunch of hash join
projects and have been paging the topic area back into my brain, so
I'll start with another round of testing/analysis of this bug/patch
next week.

#17Thomas Munro
thomas.munro@gmail.com
In reply to: David Geier (#16)
Re: Assertion failure with barriers in parallel hash join

On Thu, Nov 17, 2022 at 8:01 PM David Geier <geidav.pg@gmail.com> wrote:

Can we make progress with this patch in the current commit fest, or discuss what is still missing to bring this in?

Hi David,
Sorry for the delay. I'll aim to get this done in the next few days.

#18David Geier
geidav.pg@gmail.com
In reply to: Thomas Munro (#17)
Re: Assertion failure with barriers in parallel hash join

Thanks!

Please let me know if I can help out, e.g. with re-testing.

--
David Geier
(ServiceNow)

Show quoted text

On 11/17/22 08:28, Thomas Munro wrote:

On Thu, Nov 17, 2022 at 8:01 PM David Geier <geidav.pg@gmail.com> wrote:

Can we make progress with this patch in the current commit fest, or discuss what is still missing to bring this in?

Hi David,
Sorry for the delay. I'll aim to get this done in the next few days.

#19Thomas Munro
thomas.munro@gmail.com
In reply to: David Geier (#18)
Re: Assertion failure with barriers in parallel hash join

Pushed and back-patched, with minor comment tweaks. Apologies for
taking so long.